/*
Theme Name: Black Helterline
Theme URI: https://www.bhlaw.com
Author: Dan Gilroy Design
Author URI: https://dangilroy.com
Description: Custom theme for Black Helterline LLP. Structured/architectural design system; slate, warm stone, and paper foundation with a vermilion accent; split ink-field hero with per-practice motion panel.
Version: 0.4.36
Requires PHP: 7.4
Text Domain: black-helterline
*/

/* SELF-HOSTED ARCHIVO */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 300 800;
  font-stretch: 100%;
  font-display: swap;
  src: url(assets/fonts/archivo-vietnamese-v25.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 300 800;
  font-stretch: 100%;
  font-display: swap;
  src: url(assets/fonts/archivo-latin-ext-v25.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 300 800;
  font-stretch: 100%;
  font-display: swap;
  src: url(assets/fonts/archivo-latin-v25.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* TOKENS */
:root{ --slate:#3b4751; --stone:#dad1bd; --vermilion:#f0483e; --ink:#1c2228; --paper:#f7f4ed; --mist:#c8cdd1; --slate-2:#4a5762; --line:#d8d3c6; --line-dark:rgba(218,209,189,.18); --font:'Archivo','Helvetica Neue',Arial,sans-serif; --wrap:1280px; --gut:clamp(22px,5vw,72px); --header-h:122px; }
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--paper); font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
h1,h2,h3{margin:0;font-weight:800;line-height:1.02;letter-spacing:-.01em}
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gut)}
.kicker{font-size:.72rem;letter-spacing:.32em;font-weight:600;text-transform:uppercase;color:var(--slate)}
.kicker .mid{color:var(--vermilion);font-weight:700;margin:0 .5em}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
:focus-visible{outline:2px solid var(--vermilion);outline-offset:3px}

/* KEYBOARD ACCESS */
.skip-link{position:fixed;top:12px;left:12px;z-index:300;padding:12px 20px;background:var(--paper);color:var(--ink);font-weight:600;transform:translateY(-160%)}
.skip-link:focus{transform:none}
.print-brand{display:none}
main:focus{outline:none}
main [id]{scroll-margin-top:calc(var(--header-h) + 24px)}
.search-field input:focus-visible{outline:none}
.search-field:focus-within{border-bottom-color:var(--paper);box-shadow:0 1px 0 var(--paper)}

/* HEADER */
.site-header{position:fixed;top:0;left:0;width:100%;z-index:100; transition:background .4s ease,box-shadow .4s ease,border-color .4s ease; border-bottom:1px solid transparent}
.site-header .bar{display:flex;align-items:center;justify-content:space-between; height:var(--header-h);max-width:var(--wrap);margin:0 auto;padding-inline:var(--gut)}
.brand{display:flex;align-items:center;height:90px}
.brand img{height:52px;width:auto;display:block}
.brand .logo-light{display:block}
.brand .logo-dark{display:none}
.site-header.scrolled{background:var(--paper);border-color:var(--line); box-shadow:0 1px 24px rgba(28,34,40,.06)}
.site-header.scrolled .logo-light{display:none}
.site-header.scrolled .logo-dark{display:block}
.nav{display:flex;align-items:center;gap:clamp(18px,2.2vw,34px)}
.nav-primary{display:flex;align-items:center;gap:clamp(16px,2vw,30px);list-style:none;margin:0;padding:0}
.nav-primary>li{height:var(--header-h);display:flex;align-items:center}
.nav-flyout{position:relative}
.nav-primary>li>a,.nav-primary>li>button{font-family:var(--font);font-size:1.15rem;font-weight:500; letter-spacing:.02em;color:#eceae3;background:none;border:0;cursor:pointer;padding:6px 0; display:inline-flex;align-items:center;gap:6px;transition:color .25s ease}
.site-header.scrolled .nav-primary>li>a,.site-header.scrolled .nav-primary>li>button{color:var(--slate)}
.nav-primary>li>a:hover,.nav-primary>li>button:hover, .nav-primary>li>a:focus-visible,.nav-primary>li>button:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.nav-primary>li>button[aria-expanded="true"]{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.caret{width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor; transform:rotate(45deg) translateY(-2px);transition:transform .3s ease}
.has-mega[aria-expanded="true"] .caret{transform:rotate(225deg) translateY(-2px)}
.icon-btn{background:none;border:0;cursor:pointer;color:#eceae3;padding:6px;display:inline-flex; align-items:center;transition:color .25s ease}
.site-header.scrolled .icon-btn{color:var(--slate)}
.icon-btn:hover,.icon-btn:focus-visible{color:var(--vermilion)}
.icon-btn svg{width:20px;height:20px;display:block}
.hamburger{flex-direction:column;gap:4px;justify-content:center;width:28px;height:22px}
.hamburger span{display:block;width:22px;height:1.6px;background:currentColor;transition:transform .3s ease}
/* mobile header: below 1000px the inline trio hides with the mega (everything lives in the overlay); search + hamburger stay */
@media(max-width:1000px) {
  .nav-primary{display:none}
}
@media(max-width:480px) {
  .brand img{height:27px}
}
@media(min-width:481px) and (max-width:700px) {
  .brand img{height:32px}
}

/* MEGA MENU */
.mega{position:absolute;top:100%;background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:0 24px 40px rgba(28,34,40,.10);opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .3s ease,transform .3s ease,visibility 0s linear .3s;z-index:99}
.mega.open{opacity:1;visibility:visible;transform:none;transition-delay:0s}
.practice-mega{position:fixed;top:var(--header-h);left:0;width:100%}
.mega-inner{max-width:var(--wrap);margin:0 auto;padding:44px var(--gut) 52px; display:grid;grid-template-columns:repeat(5,1fr);gap:36px 0}
/* hairline column separators carry the architectural system; generous padding de-crowds */
.mega-col{border-left:1px solid var(--line);padding-inline:26px}
.mega-col:first-child{border-left:0;padding-left:0}
.mega-col:last-child{padding-right:0}
.mega-col .mega-title{font-size:1.05rem;letter-spacing:0;text-transform:none;color:var(--ink);margin:0 0 8px;font-weight:700;line-height:1.3;min-height:0}
.mega-col a{display:block;font-size:.9rem;font-weight:400;color:var(--slate-2);padding:7px 0; border-left:2px solid transparent;padding-left:0;transition:color .2s ease,padding-left .2s ease,border-color .2s ease}
.mega-col a:hover,.mega-col a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px;border-color:var(--vermilion);padding-left:9px}
.people-mega{position:fixed;top:var(--header-h);left:0;right:auto;width:100%;box-shadow:0 16px 28px rgba(28,34,40,.08)}
.people-mega-inner{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gut);display:grid;grid-template-columns:repeat(3,minmax(0,220px));justify-content:end}
.people-mega-inner>a{display:flex;align-items:center;justify-content:space-between;min-height:84px;padding:0 24px;border-left:1px solid var(--line);font-size:1.05rem;font-weight:700;color:var(--ink);transition:color .2s ease,background .2s ease}
.people-mega-inner>a:last-child{border-right:1px solid var(--line)}
.people-mega-inner>a span{transition:transform .2s ease}
.people-mega-inner>a::after{content:"/";font-size:1.05rem;font-weight:400;color:var(--mist);transition:color .2s ease,transform .2s ease}
.people-mega-inner>a:hover,.people-mega-inner>a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px;background:rgba(218,209,189,.18)}
.people-mega-inner>a:hover span,.people-mega-inner>a:focus-visible span{transform:translateX(5px)}
.people-mega-inner>a:hover::after,.people-mega-inner>a:focus-visible::after{color:var(--vermilion);transform:translateX(-3px)}
/* tablet: wrap to three columns; below 1000px the mega is off — Practice Areas lives in the menu overlay */
@media(max-width:1240px) {
  .mega-inner{grid-template-columns:repeat(3,1fr);gap:40px 0}
  .mega-col .mega-title{min-height:0}
  .mega-col:nth-child(3n+1){border-left:0;padding-left:0}
  .mega-col:nth-child(3n){padding-right:0}
}
@media(max-width:1000px) {
  .mega{display:none}
}

/* OVERLAYS (SEARCH + FULL MENU) */
.overlay{position:fixed;inset:0;z-index:200;background:var(--slate);color:var(--paper); opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s ease;overflow-y:auto; display:flex;flex-direction:column}
.overlay.open{opacity:1;visibility:visible}
.overlay-top{display:flex;justify-content:space-between;align-items:center;height:92px;flex:0 0 auto; width:100%;max-width:var(--wrap);margin:0 auto;padding-inline:var(--gut)}
.overlay-top .brand img{height:48px}
@media(max-width:700px){.overlay-top .brand img{height:32px}}
@media(max-width:480px){.overlay-top .brand img{height:27px}}
/* animated close: bars draw into an X on open, the whole mark turns on hover */
.overlay .close{position:relative;width:52px;height:52px;flex:0 0 auto;background:none;cursor:pointer; border:1px solid rgba(247,244,237,.28);border-radius:999px;padding:0; transition:border-color .3s ease,transform .5s cubic-bezier(.4,0,.2,1)}
.overlay .close span{position:absolute;left:50%;top:50%;width:20px;height:1.8px;background:var(--paper); transform:translate(-50%,-50%) rotate(0deg) scaleX(.2);opacity:0; transition:transform .45s cubic-bezier(.6,0,.2,1),opacity .3s ease,background .3s ease}
.overlay.open .close span{opacity:1}
.overlay.open .close span:nth-child(1){transform:translate(-50%,-50%) rotate(45deg);transition-delay:.18s}
.overlay.open .close span:nth-child(2){transform:translate(-50%,-50%) rotate(-45deg);transition-delay:.26s}
.overlay .close:hover,.overlay .close:focus-visible{border-color:var(--vermilion);transform:rotate(90deg)}
.overlay .close:hover span,.overlay .close:focus-visible span{background:var(--vermilion)}
/* search: one quiet field, vertically centred, the BH mark as a watermark behind it */
.search-body{flex:1;display:flex;flex-direction:column;justify-content:center;position:relative; width:100%;max-width:840px;margin:0 auto;padding:0 var(--gut) 10vh}
.search-mark{position:absolute;left:50%;top:50%;transform:translate(-50%,-54%); width:min(48vw,400px);opacity:.09;color:var(--stone);pointer-events:none}
.search-mark svg{width:100%;height:auto;display:block}
.search-field{display:flex;align-items:center;gap:18px;border-bottom:2px solid var(--stone);position:relative;z-index:1}
.search-field input{flex:1;background:none;border:0;color:var(--paper);font-family:var(--font); font-size:clamp(1.5rem,3.4vw,2.3rem);font-weight:300;padding:16px 0;outline:none}
.search-field input::placeholder{color:rgba(218,209,189,.45)}
.search-field button{background:none;border:0;color:var(--stone);cursor:pointer;padding:6px;display:flex; transition:color .25s ease}
.search-field button:hover,.search-field button:focus-visible{color:var(--vermilion)}
.search-field button svg{width:26px;height:26px;display:block}
.menu-body{flex:1;width:100%;max-width:var(--wrap);margin:0 auto;padding:4vh var(--gut) 8vh; display:grid;grid-template-columns:1.3fr 1fr;gap:56px;align-content:center}
.menu-primary a{display:block;font-size:clamp(1.8rem,4.2vw,3rem);font-weight:700;color:var(--paper); letter-spacing:-.01em;padding:10px 0;transition:color .25s ease,transform .25s ease;width:max-content}
.menu-primary a:hover,.menu-primary a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px;transform:translateX(10px)}
.menu-secondary{display:grid;grid-template-columns:1fr 1fr;gap:36px 28px;align-self:start; padding-top:14px;border-top:1px solid var(--line-dark)}
.menu-secondary .menu-label{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--stone); margin:0 0 14px;font-weight:700}
.menu-secondary a{display:block;font-size:.95rem;color:rgba(247,244,237,.82);padding:5px 0}
.menu-secondary a:hover,.menu-secondary a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.menu-office{grid-column:1/-1;margin-top:10px;padding-top:22px;border-top:1px solid var(--line-dark); font-size:.9rem;color:var(--stone);display:flex;flex-wrap:wrap;gap:8px 30px}
.menu-office b{color:var(--paper);font-weight:600}
/* the badge closes the overlay column, centred under the menu.
   Below ~80px the knocked-out monogram silts up and reads as a blob, so the
   mark is sized to stay legible rather than sized to stay quiet. */
.menu-mark{flex:0 0 auto;width:100%;display:flex;justify-content:center;padding:0 var(--gut) 5vh;pointer-events:none}
.menu-mark svg{width:clamp(80px,7vw,92px);height:auto;display:block;color:var(--stone);opacity:.5}
@media(max-width:820px) {
  .menu-body{grid-template-columns:1fr;gap:40px}
  .menu-mark{padding-bottom:4vh}
  .menu-mark svg{width:72px}
}
@media(max-width:560px) {
  .menu-secondary{grid-template-columns:1fr}
}

/* HERO — CONCEPT E3 "ARCHITECTURE, ABSTRACTED" (PER-PRACTICE VIDEO, WARMED) */
/* warm stone glow lives on the hero itself so the seam wedge and the field share one ground */
.hero-e{position:relative;width:100%;height:clamp(620px,94vh,880px);overflow:hidden; background:radial-gradient(70% 90% at 54% 100%,rgba(218,209,189,.065),transparent 60%) var(--ink); isolation:isolate;display:grid;grid-template-columns:46% 1fr;--hold:4500ms;--seam:76px}
.texture{position:relative;overflow:hidden;isolation:isolate; clip-path:polygon(0 0,100% 0,calc(100% - var(--seam)) 100%,0 100%)}
.tx{position:absolute;inset:0;margin:0;opacity:0;transition:opacity 1.1s ease;z-index:0}
.tx.on{opacity:1;z-index:1}
.tx video,.tx img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover; transform-origin:var(--ox,50%) var(--oy,50%);transform:scale(var(--zoom,1.15)) translateZ(0);backface-visibility:hidden}
/* still sits under the clip; the clip only surfaces once it is actually playing */
.tx.has-still video{opacity:0;transition:opacity .8s ease}
.tx.has-still.vplay video{opacity:1}
.tx-business{--zoom:1.35;--ox:45%;--oy:35%}
.tx-litigation{--zoom:1.25;--ox:55%;--oy:45%}
.tx-realestate{--zoom:1.85;--ox:52%;--oy:18%}
/* crop to crane + sky; foreign signage in the lower frame must never show */
.tx-tax{--zoom:1.2;--ox:50%;--oy:35%}
.tx-immigration{--zoom:1.25;--ox:50%;--oy:50%}
.texture::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:2; background:linear-gradient(to top,rgba(28,34,40,.0),rgba(40,33,24,.36))}
/* top scrim keeps the fixed header legible over bright footage */
.hero-scrim{display:none;}
.seamline{position:absolute;top:0;bottom:0;left:calc(46% - var(--seam));width:calc(var(--seam) + 3px);height:100%;z-index:3;pointer-events:none;overflow:visible}
.seamline-base,.seamline-stroke{fill:none;stroke-width:3;vector-effect:non-scaling-stroke}
.seamline-base{stroke:var(--ink)}
.seamline-stroke{stroke:var(--vermilion);stroke-dasharray:1;stroke-dashoffset:1}
/* the ink field — warmed with a faint stone glow rising from the lower corner */
.field{position:relative;padding:clamp(120px,18vh,168px) clamp(26px,5vw,76px) clamp(24px,4vh,40px) clamp(40px,6vw,96px); display:flex;flex-direction:column;justify-content:space-between}
.hero-e .copy .kicker{color:var(--stone);margin:0 0 clamp(14px,1.8vw,22px)}
.wordmark{margin:0;font-weight:800;line-height:.92;letter-spacing:-.005em;color:var(--paper); font-size:clamp(2.4rem,4.6vw,4.2rem)}
.wordmark .llp{font-size:.28em;font-weight:600;letter-spacing:.28em;vertical-align:baseline; margin-left:.55em;color:var(--stone)}
/* tagline-as-heading experiment (Dan 2026-07-16): longer line needs a smaller
   display scale and looser leading than the two-word wordmark */
.wordmark.wm-tagline{font-size:clamp(2.9rem,4.6vw,4.75rem);line-height:1.03;letter-spacing:-.018em}
.wm-br-mobile{display:none}
/* featured practice — rotating through content that never goes stale */
.feature{margin-top:clamp(26px,4vh,44px)}
.flabel{font-size:.68rem;letter-spacing:.3em;font-weight:600;text-transform:uppercase; color:rgba(218,209,189,.66);margin:0 0 12px}
.fbody{min-height:7.2em}
.fname{margin:0;font-weight:700;font-size:clamp(1.5rem,2.6vw,2.3rem);letter-spacing:-.01em;color:var(--paper)}
.fname a{color:inherit;border-bottom:2px solid transparent;transition:border-color .25s ease,color .25s ease}
.fname a:hover,.fname a:focus-visible{color:#fff;border-color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.fsubs{margin:10px 0 0;font-size:clamp(.86rem,1vw,.98rem);font-weight:300;line-height:1.6; color:rgba(218,209,189,.8);max-width:46ch}
.fbody.swap .fname{animation:frise .5s ease both}
.fbody.swap .fsubs{animation:frise .5s ease .08s both}
@keyframes frise {
  from{opacity:0;transform:translateY(12px)}
  to{opacity:1;transform:none}
}
.fnav{display:flex;gap:14px;align-items:center;margin-top:clamp(18px,3vh,28px)}
.seg{width:clamp(40px,4.6vw,64px);background:none;border:0;padding:6px 0;cursor:pointer}
.seg .bar{display:block;height:2px;background:rgba(218,209,189,.28);position:relative;overflow:hidden}
.seg .bar i{position:absolute;inset:0;background:var(--vermilion);transform:scaleX(0);transform-origin:left}
.seg.on .bar i{animation:fill var(--hold) linear both}
.hero-e.paused .seg .bar i{animation-play-state:paused}
@keyframes fill {
  from{transform:scaleX(0)}
  to{transform:scaleX(1)}
}
.fnav .toggle{background:none;border:0;color:rgba(218,209,189,.78);font:inherit;font-size:.72rem; letter-spacing:.08em;cursor:pointer;margin-left:6px;padding:4px}
.fnav .toggle:hover{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
/* entrance */
/* The panel's clip-path (the angled seam) is STATIC-open — see .texture base
   above. The reveal is done by a semi-opaque ink veil (::before) wiping off with
   a GPU-composited transform, NOT by animating the clip-path. Animating clip-path
   re-rasterizes its edge every frame and flickers/snaps at the hand-off when the
   animation settles or the video promotes to its own layer (the "seam snaps back
   right-to-left" bug). A transform wipe never touches the clip, so the seam edge
   is painted once and stays put.
   The veil is semi-opaque (footage shows through as it pulls away) and its
   trailing edge carries the SAME angle as the wedge — a parallelogram whose left
   edge slants over the height, parallel to the seam — so it wipes off ALONG the
   seam, not as a vertical edge.
   The box is extended var(--seam) to the LEFT (left:-seam) so the slant lives in
   positive clip coordinates. This matters: an animated transform promotes the
   cover to its own layer, rasterized at its untransformed position; a slant point
   at negative x would fall outside that layer box and get clipped to a vertical
   edge BEFORE translating (you'd slide a rectangle — the "left edge is still
   perpendicular" bug). Positive coords keep the slant inside the layer.
   Base state fully covers; backwards fill holds it covering through the delay so
   nothing jumps on load; it travels just past the seam to fully clear the wedge. */
.texture::before{content:"";position:absolute;top:0;bottom:0;left:calc(0px - var(--seam));right:0;z-index:3;
  background:rgba(28,34,40, 0.99);
  clip-path:polygon(var(--seam) 0,100% 0,100% 100%,0 100%);
  transform:translateX(0);will-change:transform;pointer-events:none}
.hero-e.play .texture::before{animation:wipe 1.05s cubic-bezier(.6,0,.2,1) .15s both}
@keyframes wipe {
  from{transform:translateX(0)}
  to{transform:translateX(calc(100% - var(--seam) + 6px))}
}
/* Draw the vermilion seam as an SVG stroke, not a mask over a clipped layer.
   This preserves the bottom-up entrance without exposing a wide compositing
   bounding box after the hero leaves and re-enters the viewport. The static ink
   stroke underneath covers the texture clip's pale antialiased edge. */
.hero-e.play .seamline-stroke{animation:seamDraw .6s ease 1.2s both}
@keyframes seamDraw {
  from{stroke-dashoffset:1}
  to{stroke-dashoffset:0}
}
/* Scrim fades in with the panel sweep. Animating opacity forces the scrim onto
   its own stable compositing layer for the whole reveal, so its darkening no
   longer pops in when the texture's clip-path animation settles. */
.hero-scrim{opacity:0}
.hero-e.play .hero-scrim{animation:scrimIn 1.1s ease .15s both}
@keyframes scrimIn {
  from{opacity:0}
  to{opacity:1}
}
.hero-e .copy .kicker,.hero-e .copy .wordmark,.feature{opacity:0;transform:translateY(14px)}
.hero-e.play .copy .kicker{animation:frise .7s ease .9s both}
.hero-e.play .copy .wordmark{animation:frise .8s ease 1.05s both}
.hero-e.play .feature{animation:frise .8s ease 1.5s both}
@media (max-width:900px) {
  .hero-e{grid-template-columns:1fr;height:auto}
  .texture{height:34vh;clip-path:none !important;animation:none !important}
  .texture::before{display:none}
  .seamline{display:none}
  .field{padding-top:clamp(28px,5vh,44px)}
  .wordmark.wm-tagline{font-size:clamp(2rem,8.4vw,2.7rem);line-height:1.1}
  .wm-br-desktop{display:none}
  .wm-br-mobile{display:block}
  .fbody{min-height:0}
}
@media (prefers-reduced-motion:reduce) {
  .texture{clip-path:polygon(0 0,100% 0,calc(100% - var(--seam)) 100%,0 100%);animation:none !important}
  .texture::before{display:none}
  .tx{transition:none}
  .seamline-stroke{stroke-dashoffset:0;animation:none !important}
  .hero-scrim{opacity:1;animation:none !important}
  .hero-e .copy .kicker,.hero-e .copy .wordmark,.feature{opacity:1;transform:none;animation:none !important}
  .fbody.swap .fname,.fbody.swap .fsubs{animation:none}
  .seg .bar i{animation:none !important}
}

/* SECTIONS */
.section{padding-block:clamp(72px,10vw,132px)}
.section .head{max-width:760px}
.section .head h2{font-size:clamp(1.9rem,4vw,3rem);margin-top:16px;color:var(--ink)}
.band-slate{background:var(--slate);color:var(--stone)}
.band-slate h2,.band-slate .head h2{color:var(--paper)}
.band-slate .kicker{color:var(--stone)}
/* positioning */
.firm-top{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,5vw,68px);align-items:center}
.firm-photo{margin:0;overflow:hidden;aspect-ratio:4/3}
.firm-photo img{width:100%;height:100%;object-fit:cover;display:block}
.pos-lead{font-size:clamp(1.25rem,2.4vw,1.7rem);font-weight:300;line-height:1.5;color:var(--slate); max-width:42ch;margin-top:26px}
@media(max-width:820px) {
  .firm-top{grid-template-columns:1fr;gap:28px}
  .firm-photo{aspect-ratio:16/10}
}
.markers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:54px;border-top:1px solid var(--line)}
.marker{padding:34px 30px 16px 0;border-right:1px solid var(--line)}
.marker+.marker{padding-left:34px}
.marker:last-child{border-right:0}
@media(max-width:820px) {
  .markers{grid-template-columns:1fr}
  .markers .marker{padding:24px 0;border-right:0;border-bottom:1px solid var(--line)}
  .markers .marker:last-child{border-bottom:0}
}
.marker .n{font-size:clamp(2rem,4vw,2.9rem);font-weight:800;color:var(--ink);letter-spacing:-.02em}
.marker .n span{color:var(--vermilion)}
.marker .l{font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;color:var(--slate-2);margin-top:6px}
/* practice index */
.pindex{margin-top:52px;border-top:1px solid var(--line)}
.prow{display:grid;grid-template-columns:auto 1fr auto;gap:30px;align-items:baseline; padding:30px 0;border-bottom:1px solid var(--line);position:relative;transition:transform .3s ease}
.prow::before{content:"";position:absolute;left:-16px;top:0;bottom:0;width:2px;background:var(--vermilion); transform:scaleY(0);transform-origin:top;transition:transform .35s ease}
.prow:hover,.prow:focus-within{transform:translateX(16px)}
.prow:hover::before,.prow:focus-within::before{transform:scaleY(1)}
.prow .grp{font-size:clamp(1.4rem,2.4vw,2rem);font-weight:700;color:var(--ink);letter-spacing:-.01em;white-space:nowrap}
.prow:hover .grp,.prow:focus-within .grp{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.prow .subs{display:flex;flex-wrap:wrap;gap:6px 20px}
.prow .subs a{font-size:.92rem;color:var(--slate-2);transition:color .2s ease}
.prow .subs a:hover,.prow .subs a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.prow .idx{font-size:1.1rem;font-weight:300;color:rgba(59,71,81,.35);transition:color .25s ease}
.prow:hover .idx,.prow:focus-within .idx{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
@media(max-width:820px) {
  .prow{grid-template-columns:minmax(0,1fr);gap:12px}
  .prow .grp{white-space:normal}
  .prow .idx{display:none}
}
/* people */
.people-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
/* full-roster strip — no auto-motion (the hero owns continuous motion); browse via arrows, drag, or scroll */
.people-strip{margin-top:48px;overflow-x:auto;padding-bottom:10px;padding-inline:max(var(--gut),calc((100vw - var(--wrap))/2 + var(--gut))); scrollbar-width:thin}
.ptrack{display:flex;gap:22px;width:max-content}
.pnav{display:flex;gap:10px;align-items:center}
.pnav button{width:44px;height:44px;border-radius:999px;border:1px solid var(--line);background:none;cursor:pointer; color:var(--slate);display:flex;align-items:center;justify-content:center;transition:color .2s ease,border-color .2s ease}
.pnav button:hover,.pnav button:focus-visible{color:var(--vermilion);border-color:var(--vermilion)}
.pnav .chev{width:9px;height:9px;border-right:1.8px solid currentColor;border-top:1.8px solid currentColor;display:block}
.pnav .prev .chev{transform:rotate(-135deg) translateX(-1px)}
.pnav .next .chev{transform:rotate(45deg) translateX(-1px)}
.ptrack .pcard{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
.people-strip.in .pcard{opacity:1;transform:none}
.ptrack .pcard:nth-child(2){transition-delay:.08s}
.ptrack .pcard:nth-child(3){transition-delay:.16s}
.ptrack .pcard:nth-child(4){transition-delay:.24s}
.ptrack .pcard:nth-child(5){transition-delay:.32s}
.ptrack .pcard:nth-child(6){transition-delay:.4s}
.ptrack .pcard:nth-child(7){transition-delay:.48s}
.ptrack .pcard:nth-child(8){transition-delay:.56s}
.pcard{flex:0 0 216px;background:var(--slate);border-radius:8px;overflow:hidden;color:var(--paper)}
.pcard .ph{height:236px;display:flex;align-items:center;justify-content:center; background:linear-gradient(160deg,#43515d,#313c45);position:relative}
/* firm's headshots as shot (colour versions come with the bio rewrite) */
.pcard .ph img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}
/* demo placeholders center their monogram in every card window; rule matches nothing once real rosters replace them */
.pcard .ph img[src*="bh-placeholder-"]{object-position:center}
.pcard .ph .mono{font-size:2.4rem;font-weight:700;color:rgba(218,209,189,.5);letter-spacing:.04em}
.pcard .ph::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:3px;background:var(--vermilion); transform:scaleX(0);transform-origin:left;transition:transform .35s ease}
.pcard:hover .ph::after{transform:scaleX(1)}
/* Reserve two name lines in every card so a wrapping name (e.g. "Jennifer M. Morrissey") no longer stretches its row and opens a slate gap under the shorter cards. 2lh adapts to each context's line-height; +20px covers the vertical padding under border-box. */
.pcard .nm{padding:16px 16px 4px;font-weight:700;font-size:1rem;min-height:calc(2lh + 20px)}
.pcard .rl{padding:0 16px 18px;font-size:.8rem;color:var(--stone);letter-spacing:.04em}
.linkline{color:var(--slate);font-weight:600;font-size:.95rem;border-bottom:2px solid var(--vermilion); padding-bottom:2px;transition:color .2s ease}
.linkline:hover,.linkline:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.band-slate .linkline{color:var(--paper)}

/* 1898 band — tinted with the site's own slate (not a foreign navy), photo kept legible */
/* sepia/stone duotone per Dan 2026-07-14 (was slate cyanotype) — warmer reads more archival for the 1898 subject */
.heritage{position:relative;overflow:hidden;background:var(--ink);color:var(--paper)}
.heritage .bg{position:absolute;inset:0}
.heritage .bg img{width:100%;height:100%;object-fit:cover;object-position:center center; filter:grayscale(1) contrast(1.05) brightness(.82)}
/* Cool slate duotone (was a warm #9c8a6b sepia) so the archival photo reads in-palette, not as a separate colour universe. */
.heritage .bg::after{content:"";position:absolute;inset:0;background:var(--slate);mix-blend-mode:color}
.heritage .bg::before{content:"";position:absolute;inset:0;z-index:1; background:linear-gradient(90deg,rgba(28,34,40,.82),rgba(28,34,40,.58))}
.heritage .inner{position:relative;z-index:2;padding-block:clamp(90px,13vw,170px)}
.heritage .est{font-size:.74rem;letter-spacing:.4em;text-transform:uppercase;color:var(--stone)}
.heritage h2{font-size:clamp(2rem,4.4vw,3.4rem);max-width:20ch;margin-top:22px;color:#fff;font-weight:700;line-height:1.08}
.heritage p{margin-top:22px;max-width:52ch;color:var(--paper);font-weight:400;font-size:1.25rem}
/* recognition marks — shared by About's .creds bare mode and the footer badge lockup. The homepage recognition band was removed 2026-07-16; badges now live only in the footer. */
.recog{display:flex;align-items:center;justify-content:center;gap:clamp(48px,8vw,110px);flex-wrap:wrap; padding-block:clamp(44px,6vw,68px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.recog .badge{height:clamp(76px,8vw,104px);width:auto;display:block; filter:grayscale(1);opacity:.78;transition:filter .35s ease,opacity .35s ease}
.recog .badge:hover{filter:none;opacity:1}
/* contact */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,5vw,64px);align-items:stretch}
.contact-left{display:flex;flex-direction:column;gap:clamp(28px,4vw,44px);justify-content:center}
.contact-photo{margin:0;overflow:hidden;min-height:360px}
.contact-photo img{width:100%;height:100%;object-fit:cover;display:block}
.contact-detail{display:grid;gap:22px}
.cd{border-top:1px solid var(--line);padding-top:16px}
.cd .k{font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--slate-2);margin-bottom:8px}
.cd .v{font-size:1.1rem;color:var(--ink);font-weight:400}
.cd a.v:hover{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.cd-dot{color:var(--vermilion);margin:0 12px;font-weight:700}
@media(max-width:820px) {
  .contact-grid{grid-template-columns:1fr;gap:32px}
}
/* footer */
.site-footer{background:var(--ink);color:rgba(247,244,237,.7);padding-block:64px 40px}
.foot-top{display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:44px}
.foot-brand img{width:100%;max-width:459px;height:auto;margin-bottom:18px}
.foot-brand p{font-size:.86rem;max-width:32ch;color:rgba(247,244,237,.55);line-height:1.7}
.foot-brand a{transition:color .2s ease}
.foot-brand a:hover,.foot-brand a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.foot-col h2{line-height:1.6;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--stone);margin:0 0 14px;font-weight:700}
.foot-col a{display:block;font-size:.88rem;padding:4px 0;color:rgba(247,244,237,.68)}
.foot-col a:hover,.foot-col a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
/* Right-align all three nav columns so their edges are equidistant and they anchor the right side above the badge lockup, balancing the left-anchored brand. */
.foot-col{text-align:right}
.foot-bottom{margin-top:52px;padding-top:22px;border-top:1px solid rgba(247,244,237,.12); display:flex;justify-content:space-between;align-items:center;gap:24px 40px;flex-wrap:wrap;font-size:.78rem;color:rgba(247,244,237,.65)}
/* Fine print stacks into two lines so the left column carries enough vertical mass to balance the badge lockup on the right. */
.foot-bottom .fine{display:flex;flex-direction:column;gap:9px}
.foot-bottom .fine a{color:rgba(247,244,237,.6);transition:color .2s ease}
.foot-bottom .fine a:hover,.foot-bottom .fine a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.foot-bottom .sep{margin:0 8px;color:rgba(247,244,237,.3)}
/* Recognition marks, bottom-right. Third-party badges are dark navy/blue, so reverse them to white to read on the ink footer; badges only (bare mode), no captions. */
.foot-badges .recog{border:0;padding:0;margin:0;justify-content:flex-end;gap:clamp(22px,2.6vw,36px);flex-wrap:nowrap}
.foot-badges .recog-cell{display:flex;align-items:center}
.recog-link{display:inline-flex;align-items:center}
.foot-badges .recog .badge{height:84px;width:auto;filter:brightness(0) invert(1);opacity:.72;transition:opacity .25s ease}
.foot-badges .recog-link:hover .badge,.foot-badges .recog-link:focus-visible .badge{opacity:1}
@media(max-width:900px) {
  .foot-top{grid-template-columns:1fr 1fr}
  .foot-brand{grid-column:1/-1}
  .foot-col{text-align:left}
}
/* Phones: footer stacks into a single centered column (brand, nav groups, fine print, badges all centered). */
@media(max-width:600px) {
  .foot-top{grid-template-columns:1fr;gap:34px;text-align:center}
  .foot-brand{grid-column:1}
  .foot-brand p{max-width:34ch;margin-inline:auto}
  .foot-col{text-align:center}
  .foot-bottom{flex-direction:column;align-items:center;text-align:center;gap:20px;margin-top:44px}
  .foot-bottom .fine{align-items:center;text-align:center}
  .foot-badges{width:100%}
  .foot-badges .recog{justify-content:center;flex-wrap:wrap;gap:18px 30px}
  .foot-badges .recog .badge{height:52px}
}
.reveal{opacity:0;transform:translateY(22px);transition:opacity .8s ease,transform .8s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce) {
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  .ptrack .pcard{opacity:1;transform:none;transition:none}
}


/* INNER PAGE SCAFFOLD */
.page-shell{padding:calc(var(--header-h) + clamp(40px,8vw,90px)) 0 clamp(72px,10vw,132px)}
.page-shell .head h1{font-size:clamp(2rem,4.6vw,3.4rem);color:var(--ink);margin-top:14px}
.page-shell .entry{margin-top:34px;max-width:70ch}
.page-shell .entry p{margin:0 0 1.2em}

/* WP INTEGRATION */
.mega-col .mega-title a{font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;padding:0;border:0;transition:color .2s ease}
.mega-col .mega-title a:hover,.mega-col .mega-title a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px;padding-left:0;border-color:transparent}
.prow .grp a{color:inherit;transition:color .25s ease}
.prow .grp a:hover,.prow .grp a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.pcard{color:var(--paper)}
.menu-primary{display:flex;flex-direction:column}

/* PRACTICE PAGES */
.pa-hero{position:relative;background:var(--ink);color:var(--paper);display:grid;grid-template-columns:55% 45%;overflow:hidden;isolation:isolate;--seam:76px}
.pa-hero.no-media{grid-template-columns:1fr}
.pa-hero-copy{padding:calc(var(--header-h) + clamp(40px,8vh,84px)) clamp(26px,4vw,60px) clamp(44px,8vh,88px) max(var(--gut),calc((100vw - var(--wrap))/2 + var(--gut)));display:flex;flex-direction:column;justify-content:center}
.pa-hero .kicker{color:var(--stone)}
.pa-hero .kicker a{transition:color .2s ease}
.pa-hero .kicker a:hover,.pa-hero .kicker a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.pa-hero h1{font-size:clamp(2.2rem,4.4vw,3.6rem);color:var(--paper);margin-top:16px;line-height:1.02}
.pa-lead{margin-top:22px;max-width:46ch;font-weight:300;color:#ece8de;font-size:clamp(1rem,1.25vw,1.15rem);line-height:1.6}
.pa-hero-media{position:relative;overflow:hidden;clip-path:polygon(var(--seam,76px) 0,100% 0,100% 100%,0 100%);min-height:340px}
.pa-hero-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--pa-x,50%) var(--pa-y,50%);transform:scale(var(--pa-zoom,1));transform-origin:var(--pa-x,50%) var(--pa-y,50%)}
.pa-hero-media::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(160deg,rgba(59,71,81,.10),rgba(48,42,32,.30));mix-blend-mode:multiply}
/* Corporate Restructuring & Bankruptcy: lift the backlit room and retain the navigation scrim. */
.postid-335 .pa-hero-media img{filter:brightness(1.3) contrast(.9)}
.postid-335 .pa-hero-media::after{opacity:0}
.pa-hero-media::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(9,16,26,.5),rgba(9,16,26,0) 32%)}
.pa-seam{position:absolute;inset:0;z-index:3;pointer-events:none;background:var(--vermilion); clip-path:polygon(calc(55% + var(--seam)) 0,calc(55% + var(--seam) + 3px) 0,calc(55% + 3px) 100%,55% 100%)}
.pa-section{padding-block:clamp(56px,8vw,104px)}
.pa-body{max-width:70ch}
.pa-body p{margin:0 0 1.2em}
.pa-page-head{padding:calc(var(--header-h) + clamp(36px,7vw,72px)) 0 0}
.pa-crumbs{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:.78rem;letter-spacing:.08em;color:var(--slate-2)}
.pa-crumbs a{transition:color .2s ease}
.pa-crumbs a:hover,.pa-crumbs a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.pa-crumbs .sep{color:var(--mist)}
.pa-hero--child .pa-crumbs{color:rgba(247,244,237,.72)}
.pa-hero--child .pa-crumbs .sep{color:rgba(218,209,189,.55)}
.pa-page-head h1{font-size:clamp(2rem,4.2vw,3.2rem);color:var(--ink);margin-top:18px}
.pa-people{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;margin-top:40px}
.pa-people .pcard{flex:none}
.pa-siblings{margin-top:clamp(44px,6vw,68px);padding-top:26px;border-top:1px solid var(--line)}
.pa-siblings .kicker{margin-bottom:16px;display:block}
.pa-siblings-links{display:flex;flex-wrap:wrap;gap:10px 26px}
.pa-siblings-links a{font-size:.95rem;color:var(--slate-2);transition:color .2s ease}
.pa-siblings-links a:hover,.pa-siblings-links a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.pa-cta{padding-block:clamp(48px,7vw,84px)}
.pa-cta h2{font-size:clamp(1.6rem,3vw,2.3rem);color:var(--ink);margin-top:14px}
.pa-cta .links{margin-top:28px;display:flex;gap:16px;align-items:center}
.pa-cta .linkline{font-size:clamp(1.02rem,1.5vw,1.18rem);padding-bottom:3px}
@media (max-width:900px){
  .pa-hero{grid-template-columns:1fr}
  .pa-hero-media{clip-path:none;min-height:30vh;order:-1}
  .pa-seam{display:none}
  .pa-hero-copy{padding-top:clamp(28px,5vh,44px)}
}

/* PRACTICE SUB-PAGE CONTENT GRID */
.pa-content-grid{display:grid;grid-template-columns:minmax(0,1fr) clamp(250px,27vw,330px);gap:clamp(32px,5vw,64px);align-items:start}
.pa-figure{margin:0;overflow:hidden;position:sticky;top:calc(var(--header-h) + 24px)}
.pa-figure img{width:100%;height:auto;display:block}
@media (max-width:900px){
  .pa-content-grid{grid-template-columns:1fr}
  .pa-figure{position:static;max-width:520px}
}

/* PRACTICE PEOPLE RAIL (visible on arrival, replaces below-fold grid on sub-pages) */
.pa-rail{border-left:1px solid var(--line);padding-left:clamp(20px,2.5vw,34px)}
.pa-rail .kicker{display:block;margin-bottom:6px}
.pa-rail-list{list-style:none;margin:0;padding:0}
.pa-rail-list li{border-bottom:1px solid var(--line)}
.pa-rail-list a{display:flex;gap:12px;align-items:center;padding:10px 0;transition:color .2s ease}
.pa-rail-list img{width:44px;height:44px;object-fit:cover;object-position:top center;display:block;flex:none}
.pa-rail-list .nm{font-weight:600;font-size:.93rem;color:var(--ink);line-height:1.3}
.pa-rail-list .rl{font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--slate-2);display:block;margin-top:2px}
.pa-rail-list a:hover .nm,.pa-rail-list a:focus-visible .nm{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
@media (max-width:900px){
  .pa-rail{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:26px}
}

/* PRACTICE IMAGE BAND (the firm photography at full presence) */
.pa-imageband{margin:0}
.pa-imageband img{width:100%;height:clamp(300px,44vw,520px);object-fit:cover;display:block}

/* STONE BAND (homepage practice index gets its own ground, distinct from paper and inner pages) */
/* lightened from raw --stone (#dad1bd) per Dan 2026-07-14 — ~40% toward paper */
.band-stone{background:#e6dfd0}
.band-stone .pindex{border-top-color:rgba(59,71,81,.28)}
.band-stone .prow{border-bottom-color:rgba(59,71,81,.28)}
.band-stone .prow .idx{color:rgba(59,71,81,.45)}
.band-stone .prow .subs a{color:var(--slate)}
.band-stone .prow .subs a:hover,.band-stone .prow .subs a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}

/* GROUP-PAGE INDEX: fixed tracks so teaser prose shares one left edge
   (homepage .prow keeps auto tracks — its subs are link chips, not sentences) */
.pindex-cols .prow{grid-template-columns:minmax(0,5fr) minmax(0,7fr) auto}
.pindex-cols .prow .grp{white-space:normal}

/* group body: no bottom padding — the index section's own top padding sets the gap,
   otherwise the two stack into a ~200px hole. The following index also runs half
   the standard section top padding (Dan 2026-07-15: full still read as a hole). */
.pa-groupbody{padding-bottom:0}

/* INQUIRE-WITH (switchboard lead) fills the group body's dead right column;
   without a lead the wrap renders single-column exactly as before. No align-items:start —
   the aside stretches so its left divider runs the full row height; gap + padding
   split the original clamp(40,6vw,88) so the hairline sits centred between columns */
.pa-body-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(24px,3vw,44px)}
.pa-leadcard{border-left:1px solid var(--line);padding-left:clamp(24px,3vw,44px);display:flex;flex-direction:column;gap:6px}
.pa-leadcard .kicker{margin-bottom:8px}
.pa-leadcard .plc-n{font-weight:700;color:var(--ink);font-size:clamp(1.15rem,1.6vw,1.35rem);letter-spacing:-.01em;transition:color .2s ease}
.pa-leadcard .plc-n:hover,.pa-leadcard .plc-n:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.pa-leadcard .plc-r{color:var(--slate-2);font-size:.92rem}
.pa-leadcard .plc-c{display:flex;flex-direction:column;gap:4px;margin-top:8px;font-size:.95rem}
.pa-leadcard .plc-c a{color:var(--slate);transition:color .2s ease}
.pa-leadcard .plc-c a:hover,.pa-leadcard .plc-c a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
@media(max-width:900px) {
  .pa-body-grid{grid-template-columns:1fr;gap:clamp(34px,5vw,48px)}
  /* stacked: the divider goes horizontal again */
  .pa-leadcard{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:18px}
}
.pa-groupbody + .section{padding-top:clamp(36px,5vw,66px)}

.pa-subbody{padding-top:clamp(42px,6vw,72px)}

/* IMAGE BAND opens the sub-area page, above breadcrumbs + heading */
.pa-band-head{padding-top:calc(var(--header-h) + clamp(24px,4vw,48px))}
.pa-imageband-top{margin:0}
.pa-imageband-top img{height:clamp(260px,34vw,460px)}
.pa-imageband--firm img{height:clamp(210px,24vw,330px)}
.pa-imageband--about img{object-position:center 35%}
.pa-imageband--careers img{height:clamp(250px,28vw,380px);object-position:center 42%}
.pa-imageband--industries img{object-position:center 32%}

/* MAILTO CONFIDENTIALITY DIALOG */
.email-disclaimer{width:min(560px,calc(100vw - 36px));border:0;border-radius:3px;background:var(--paper);color:var(--ink);padding:clamp(28px,5vw,46px);box-shadow:0 28px 90px rgba(28,34,40,.35)}
.email-disclaimer::backdrop{background:rgba(28,34,40,.72);backdrop-filter:blur(3px)}
.email-disclaimer h2{font-size:clamp(1.55rem,4vw,2.1rem);margin:12px 0 16px}
.email-disclaimer p{margin:0;color:var(--slate-2);line-height:1.65}
.email-disclaimer-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:30px}
.email-disclaimer button{font:600 .88rem var(--font);padding:11px 18px;cursor:pointer;border:1px solid var(--mist);background:transparent;color:var(--slate)}
.email-disclaimer .email-continue{border-color:var(--vermilion);background:var(--ink);color:var(--paper)}
.email-disclaimer button:hover,.email-disclaimer button:focus-visible{border-color:var(--ink)}
.pa-page-head.under-band{padding-top:clamp(32px,5vw,52px)}

/* PEOPLE PAGE */
.pp-head{padding:calc(var(--header-h) + clamp(20px,3.5vw,38px)) 0 clamp(20px,3vw,36px)}
.pp-head h1{font-size:clamp(2.2rem,4.6vw,3.6rem);color:var(--ink);margin-top:16px}
/* anchors share the heading row, flushed right on the h1 baseline */
.pp-headrow{display:flex;align-items:baseline;justify-content:space-between;gap:18px 40px;flex-wrap:wrap}
.pp-lead{margin-top:22px;max-width:60ch;font-weight:300;color:var(--slate-2);font-size:clamp(1rem,1.2vw,1.12rem)}
.pp-anchors{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
  font-size:.86rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.pp-anchors a{color:var(--slate);transition:color .2s ease}
.pp-anchors a:hover,.pp-anchors a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.pp-anchors .sep{color:var(--mist)}
.pp-group{padding-block:clamp(36px,5vw,64px)}
.pp-group-head{display:flex;align-items:baseline;gap:16px;border-top:1px solid var(--line);padding-top:26px;margin-bottom:34px}
.pp-group-head h2{font-size:clamp(1.5rem,2.8vw,2.2rem);color:var(--ink)}
.pp-group-head .idx{margin-left:auto;font-size:1.1rem;font-weight:300;color:rgba(59,71,81,.35)}
.pcard--memorial .rl{color:var(--stone);letter-spacing:.08em}

/* BIO PAGE (full-span photo band, identity overlaid; mirrors .pa-imageband-top) */
.bio-band-head{padding-top:calc(var(--header-h) + clamp(24px,4vw,48px))}
.bio-hero{position:relative;margin:0;overflow:hidden}
.bio-hero img{width:100%;height:clamp(320px,36vw,540px);object-fit:cover;object-position:60% 25%;display:block}
.bio-hero::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(to top,rgba(28,34,40,.78),rgba(28,34,40,.26) 42%,rgba(28,34,40,0) 68%)}
.bio-hero-id{position:absolute;left:0;bottom:0;z-index:1;padding:clamp(20px,3.2vw,42px) clamp(22px,3.4vw,46px)}
.bio-hero-id .pa-crumbs{color:rgba(218,209,189,.8);margin-bottom:14px}
.bio-hero-id .pa-crumbs a:hover,.bio-hero-id .pa-crumbs a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.bio-hero-id .pa-crumbs .sep{color:rgba(218,209,189,.5)}
.bio-hero-id h1{font-size:clamp(2rem,4.4vw,3.6rem);color:var(--paper);line-height:1}
.bio-role{margin:12px 0 0;font-size:.82rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--stone)}
.bio-head-plain .bio-role{color:var(--slate-2)}
.bio-content{padding-block:clamp(36px,5vw,64px) clamp(30px,4vw,48px)}
/* In Memoriam: centered flourished heading + personal photo pair */
.bio-content--memorial .bio-main{max-width:70ch;margin-inline:auto}
.memorial-head{display:flex;align-items:center;justify-content:center;gap:clamp(16px,2.4vw,30px);max-width:70ch;margin:0 auto clamp(26px,3.6vw,46px)}
.mh-rule{flex:0 1 clamp(40px,9vw,120px);height:1px;background:var(--line);position:relative}
.mh-rule::after{content:"";position:absolute;top:50%;width:5px;height:5px;background:var(--vermilion);transform:translateY(-50%) rotate(45deg)}
.mh-rule:first-child::after{right:-3px}
.mh-rule:last-child::after{left:-3px}
.mh-label{margin:0;font-size:clamp(1.4rem,2.7vw,2.05rem);font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--slate);white-space:nowrap}
.bio-gallery{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,1.8vw,24px);max-width:70ch;margin:clamp(32px,4.4vw,56px) auto 0}
.bio-gallery figure{margin:0;overflow:hidden}
.bio-gallery img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;display:block}
@media (max-width:600px){.bio-gallery{grid-template-columns:1fr}.mh-label{letter-spacing:.14em}}
.bio-rail{position:sticky;top:calc(var(--header-h) + 24px)}
.bio-rail .kicker{display:block;margin-bottom:8px;font-size:.8rem;letter-spacing:.18em;font-weight:700;color:var(--ink)}
.bio-rail-block+.bio-rail-block{margin-top:clamp(26px,3.5vw,40px)}
.bio-rail-rows{list-style:none;margin:0;padding:0}
.bio-rail-rows li{border-bottom:1px solid var(--line);padding:10px 0}
.bio-rail-rows .k{display:block;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--slate-2);margin-bottom:3px}
.bio-rail-rows .v{font-size:.93rem;color:var(--ink);overflow-wrap:anywhere}
.bio-rail-rows .p{display:block;font-size:.93rem;color:var(--slate-2)}
.bio-rail-rows a.v,.bio-rail-rows a.p{transition:color .2s ease}
.bio-rail-rows a.v:hover,.bio-rail-rows a.v:focus-visible,.bio-rail-rows a.p:hover,.bio-rail-rows a.p:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.bio-lists{margin-top:clamp(36px,5vw,56px)}
.bio-lists-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,64px);max-width:900px}
.bio-lists .kicker{display:block;margin-bottom:12px}
.bio-lists ul{list-style:none;margin:0;padding:0}
.bio-lists li{padding:8px 0;border-top:1px solid var(--line);font-size:.95rem;color:var(--ink)}

/* BIO TABS: desktop tablist on a hairline rule; same DOM collapses to an accordion ≤700px */
.btabs-nav{display:flex;flex-wrap:wrap;gap:clamp(18px,2.6vw,36px);border-bottom:1px solid var(--line);margin-bottom:clamp(26px,3.4vw,40px)}
.btab{appearance:none;background:none;border:0;padding:0 1px 14px;margin-bottom:-1px;font:inherit;font-size:.95rem;font-weight:600;color:var(--slate-2);cursor:pointer;position:relative;transition:color .2s ease}
.btab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--vermilion);transform:scaleX(0);transform-origin:left;transition:transform .22s ease}
.btab:hover,.btab:focus-visible{color:var(--ink)}
.btab[aria-selected="true"]{color:var(--ink)}
.btab[aria-selected="true"]::after{transform:scaleX(1)}
.btab-acc{display:none;margin:0}
.btab-panel h3{font-size:1.05rem;font-weight:700;color:var(--ink);letter-spacing:-.01em;line-height:1.3;margin:clamp(30px,4vw,44px) 0 10px}
.btab-panel ul{list-style:none;margin:12px 0 0;padding:0}
.btab-panel li{position:relative;padding:6px 0 6px 24px;font-size:.95rem;color:var(--ink)}
.btab-panel li::before{content:"/";position:absolute;left:2px;color:var(--vermilion);font-weight:600}
@media (prefers-reduced-motion:reduce){.btab::after{transition:none}}
@media (max-width:700px){
  .btabs-nav{display:none}
  .btab-acc{display:block}
  .btab-acc button{appearance:none;background:none;border:0;border-top:1px solid var(--line);width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 0;font:inherit;font-size:.98rem;font-weight:600;color:var(--ink);cursor:pointer;text-align:left}
  .btab-sec:last-child{border-bottom:1px solid var(--line)}
  .ac-mark{position:relative;width:12px;height:12px;flex:none}
  .ac-mark::before,.ac-mark::after{content:"";position:absolute;background:var(--vermilion)}
  .ac-mark::before{left:0;right:0;top:5px;height:2px}
  .ac-mark::after{top:0;bottom:0;left:5px;width:2px;transition:transform .2s ease}
  .btab-acc button[aria-expanded="true"] .ac-mark::after{transform:scaleY(0)}
  .btab-panel{padding:2px 0 22px}
}
@media (max-width:820px){
  .bio-hero img{object-position:68% 25%}
  .bio-hero-id .pa-crumbs{margin-bottom:8px}
  .bio-rail{position:static}
  .bio-lists-grid{grid-template-columns:1fr}
}

/* PEOPLE PAGE: FILTER RAIL + FOUR-UP GRID */
.wrap--wide{max-width:min(1480px,100%)}
.pp-layout{display:grid;grid-template-columns:minmax(0,1fr) clamp(220px,22vw,270px);gap:clamp(28px,3vw,40px);align-items:start;padding-bottom:clamp(56px,7vw,96px)}
.pp-layout .pp-group{padding-bottom:0}
.pa-people .pcard .nm{line-height:1.3;padding-bottom:2px}
.pa-people .pcard .ph::before{content:"Read full bio \2192";position:absolute;left:0;right:0;bottom:0;z-index:1;padding:26px 16px 12px;font-size:.78rem;font-weight:600;letter-spacing:.06em;color:var(--paper);background:linear-gradient(to top,rgba(28,34,40,.82),rgba(28,34,40,0));opacity:0;transform:translateY(8px);transition:opacity .3s ease,transform .3s ease}
.pa-people .pcard:hover .ph::before,.pa-people .pcard:focus-visible .ph::before{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.pa-people .pcard .ph::before{transition:none;transform:none}}
/* margin (not padding) drops the rail to the Attorneys grid top (measured 167px at
   capped type; Dan's "about 65px" ask, resolved to the actual grid line) without
   lowering its stuck position */
.ppf{border-left:1px solid var(--line);padding-left:clamp(20px,2.5vw,32px);position:sticky;top:calc(var(--header-h) + 24px);margin-top:167px}
.ppf--archive{margin-top:clamp(36px,5vw,64px)}
.ppf .kicker{display:block;margin-bottom:16px}
.ppf-all{display:block;font-size:.95rem;font-weight:700;color:var(--ink);padding:4px 0 16px;transition:color .2s ease}
.ppf-group{margin-top:16px;border-top:1px solid var(--line);padding-top:16px}
.ppf-group h2{line-height:1.6;margin:0 0 8px;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--slate);font-weight:700}
.ppf button,.ppf-all{background:none;border:0;cursor:pointer;font-family:var(--font);text-align:left;width:100%}
.ppf-group button{display:block;font-size:.9rem;font-weight:300;color:var(--slate-2);padding:6px 0;transition:color .2s ease}
.ppf button:hover,.ppf button:focus-visible,.ppf-all:hover,.ppf-all:focus-visible{color:var(--ink);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:5px}
.ppf button[aria-pressed="true"],.ppf-all[aria-pressed="true"]{color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:5px}
.pp-people-grid{margin-top:0}
.pp-people-grid--three{grid-template-columns:repeat(3,minmax(0,1fr))}
.pcard.filtered-out{display:none}
.pp-group.filtered-out{display:none}
/* anchor jumps clear the fixed header */
.pp-group{scroll-margin-top:calc(var(--header-h) + 16px)}
@media (max-width:1024px){
  .pa-people{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1000px){
  .pp-layout{grid-template-columns:1fr}
  .ppf{position:static;border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:22px;order:2;margin-top:0}
}
@media (max-width:640px){
  .pa-people{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ABOUT: HISTORY BAND */
.about-history{padding-block:clamp(56px,8vw,104px)}
.about-history h2{font-size:clamp(1.6rem,3vw,2.4rem);color:var(--ink);margin:14px 0 22px}
.about-history-grid{display:grid;grid-template-columns:minmax(0,1fr) clamp(280px,30vw,400px);gap:clamp(36px,6vw,80px);align-items:start}
.about-history-figure{margin:0;overflow:hidden}
.about-history-figure img{width:100%;height:auto;display:block}

/* CONTACT PAGE */
.contact-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(36px,6vw,80px);align-items:start}
.contact-info .pa-body{margin-bottom:26px}
/* stock embed's POI pins are the only saturated thing on the page — mute the
   whole frame at rest, restore color on hover/focus when someone actually uses it */
.contact-map iframe{width:100%;aspect-ratio:4/3;border:0;display:block;filter:saturate(.35);transition:filter .3s ease}
.contact-map:hover iframe,.contact-map:focus-within iframe{filter:none}

/* NEWS INDEX */
.nindex{border-top:1px solid var(--line)}
.nrow{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:18px 28px;padding:24px 0;border-bottom:1px solid var(--line)}
.nrow .dt{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--slate-2);padding-top:6px}
.nrow h2{font-size:clamp(1.15rem,1.8vw,1.5rem);color:var(--ink);line-height:1.25}
.nrow h2 a{transition:color .2s ease}
.nrow h2 a:hover,.nrow h2 a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.nrow .tz{margin:8px 0 0;font-size:.95rem;color:var(--slate-2);max-width:64ch}
.nrow .idx{font-size:1.1rem;font-weight:300;color:var(--mist);padding-top:6px;transition:color .2s ease}
.nrow:hover .idx{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.nempty{color:var(--slate-2);font-weight:300}
.ndate{margin:14px 0 0;font-size:.82rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--slate-2)}
.pa-band-head.under-head{padding-top:clamp(28px,4vw,48px)}
.npage{margin-top:clamp(36px,5vw,56px)}
.npage .nav-links{display:flex;gap:20px;flex-wrap:wrap;align-items:baseline}
.npage a,.npage span{font-size:.9rem;color:var(--slate-2);transition:color .2s ease}
.npage a:hover,.npage a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.npage .current{color:var(--vermilion);font-weight:600}
@media (max-width:820px){
  .about-history-grid{grid-template-columns:1fr}
  .about-history-figure{max-width:480px}
  .contact-grid{grid-template-columns:1fr}
  .nrow{grid-template-columns:minmax(0,1fr) auto}
  .nrow .dt{grid-column:1 / -1;padding-top:0}
}

/* SEARCH RESULTS */
.search-again{margin-top:clamp(24px,3.5vw,40px);display:flex;align-items:center;gap:14px;max-width:520px;border-bottom:2px solid var(--slate)}
.search-again input{flex:1;background:none;border:0;font-family:var(--font);font-size:1.05rem;color:var(--ink);padding:12px 0;outline:none}
.search-again input::placeholder{color:var(--mist)}
.search-again button{background:none;border:0;color:var(--slate-2);cursor:pointer;padding:6px;display:flex;transition:color .25s ease}
.search-again button:hover,.search-again button:focus-visible{color:var(--vermilion)}
.search-again button svg{width:20px;height:20px}

/* INDUSTRIES LIST */
.ind-cols ul{list-style:none;margin:0;padding:0;columns:3;column-gap:clamp(40px,5vw,80px)}
@media (max-width:900px){ .ind-cols ul{columns:2} }
.ind-cols li{border-top:1px solid var(--line);padding:13px 0;break-inside:avoid;font-size:1rem;color:var(--ink)}

/* SITEMAP — two stacked bands, not four columns: practice carries 18 of the
   links, so it runs full-width with one column per group (the mega-menu's
   footprint), then People / The Firm / Legal share a shorter second band.
   As a grid column, practice towered over everything beside it. */
.smap-band h2,.smap-col h2{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--slate);font-weight:700;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.smap-groups{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:clamp(24px,3vw,44px);align-items:start;margin-top:26px}
.smap-group h3{margin:0 0 10px;font-size:1rem;font-weight:700;letter-spacing:-.01em}
.smap-group h3 a{color:var(--ink);transition:color .2s ease}
.smap-group h3 a:hover,.smap-group h3 a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.smap-group ul{list-style:none;margin:0;padding:0 0 0 14px;border-left:1px solid var(--line)}
.smap-group li{padding:4px 0}
.smap-group a{font-size:.88rem;line-height:1.5;color:var(--slate-2);transition:color .2s ease}
.smap-group a:hover,.smap-group a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.smap-rest{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(32px,5vw,64px);align-items:start;margin-top:clamp(48px,6vw,76px)}
.smap-col ul{list-style:none;margin:0;padding:0}
.smap-col li{padding:4px 0}
.smap-col a{font-size:.95rem;color:var(--slate-2);transition:color .2s ease}
.smap-col a:hover,.smap-col a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
@media (max-width:900px){
  .smap-groups{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:34px}
  .smap-rest{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:34px}
}
@media (max-width:560px){
  .smap-groups{grid-template-columns:1fr}
  .smap-rest{grid-template-columns:1fr}
  .ind-cols ul{columns:1}
}

/* ============================================================
   INNER-PAGE SUBSTANCE (About / Careers / Contact / Legal)
   Added 2026-07-15. All of it reuses the hairline-index language
   already established by .pindex — rules and type, not cards.
   ============================================================ */

/* section heading that sits under a kicker inside a band */
.bsec-h{font-size:clamp(1.6rem,3vw,2.3rem);color:var(--ink);margin:14px 0 0;letter-spacing:-.01em}
.band-slate .bsec-h{color:var(--paper)}

/* INTRO GRID — copy left, rail right. The rail is load-bearing: at 70ch the
   body only spans half the wrap, and the right half read as a dead white field.
   Head + body live in ONE section here; split across two, .pa-section's
   padding-block opened a ~104px hole between the lead and the first paragraph. */
.intro-sec{padding-bottom:clamp(56px,8vw,104px)}
.intro-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(40px,6vw,88px);align-items:start}
.intro-main>.pp-lead{font-size:1rem;font-weight:400;line-height:1.6;color:var(--ink);max-width:64ch;margin-bottom:0}
.intro-body{margin-top:1.2em;max-width:64ch}
/* The rail drops below the H1's optical zone so the heading owns the full
   width; its first hairline sits on the lead paragraph's top edge. The calc
   tracks the H1's 4.2vw scaling; 119px is the measured offset once the H1
   caps at 3.2rem (vw >= ~1219). */
.intro-rail{padding-top:min(calc(60px + 4.83vw),119px)}
.intro-rail .kicker{display:block;margin-bottom:14px}
@media (max-width:900px){
  .intro-grid{grid-template-columns:1fr;gap:clamp(34px,5vw,48px)}
  .intro-rail{padding-top:0}
}

/* rail: route links (About) */
.rail-routes{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.rail-routes li{border-bottom:1px solid var(--line)}
.rail-routes a{display:block;padding:16px 0;transition:padding-left .25s ease}
.rail-routes a:hover,.rail-routes a:focus-visible{padding-left:8px}
.rr-head{display:flex;align-items:baseline;gap:9px;font-weight:700;font-size:1.02rem;color:var(--ink);transition:color .2s ease}
.rail-routes a:hover .rr-head,.rail-routes a:focus-visible .rr-head{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.rr-m{color:var(--vermilion);font-weight:400;opacity:0;transform:translateX(-5px); transition:opacity .25s ease,transform .25s ease}
.rail-routes a:hover .rr-m,.rail-routes a:focus-visible .rr-m{opacity:1;transform:none}
.rr-b{display:block;margin-top:5px;font-size:.86rem;line-height:1.55;color:var(--slate)}

/* rail: status rows (Careers) */
.rail-status{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.rail-status li{border-bottom:1px solid var(--line)}
.rail-status a,.rail-status .rs-row{display:flex;align-items:baseline;justify-content:space-between; gap:14px;padding:15px 0}
.rail-status .rs-row{flex-direction:column;gap:4px}
.rail-status .rs-row .rs-v{white-space:normal}
.rail-status a{transition:padding-left .25s ease}
.rail-status a:hover,.rail-status a:focus-visible{padding-left:8px}
.rs-n{font-weight:600;font-size:.98rem;color:var(--ink)}
.rail-status a:hover .rs-n,.rail-status a:focus-visible .rs-n{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.rs-v{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600; color:var(--slate);white-space:nowrap}
.rs-v.is-open{color:var(--vermilion)}
/* empty state: the one place "no openings" is said — the register collapses */
.rail-empty{margin:0;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line); font-size:.95rem;line-height:1.6;color:var(--slate)}
.rail-note{margin:20px 0 0}

/* CREDS — the homepage's own .marker treatment (two-tone numeral + label),
   reused verbatim rather than restyled, sat with the recognition badges.
   Hairline-divided cells (like the homepage markers index) so the numeral and
   the two badges read as one structured band, not three strays. */
.creds{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,1fr); border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.creds .marker{border-right:1px solid var(--line);align-self:center; padding:clamp(30px,4vw,46px) clamp(26px,4vw,52px) clamp(30px,4vw,46px) 0}
.creds .recog--bare{display:contents}
.creds .recog-cell{display:flex;align-items:center;justify-content:center; padding:clamp(30px,4vw,46px) clamp(16px,2vw,28px);border-right:1px solid var(--line)}
.creds .recog-cell:last-child{border-right:0}
@media (max-width:700px){
  .creds{grid-template-columns:1fr}
  .creds .marker{border-right:0;border-bottom:1px solid var(--line);padding-right:0}
  .creds .recog-cell{border-right:0;justify-content:flex-start;padding-inline:0}
  .creds .recog-cell+.recog-cell{border-top:1px solid var(--line)}
}

/* PRINCIPLES / BENEFITS — three hairline-topped columns */
.bprin{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(26px,3.4vw,44px); margin-top:clamp(36px,5vw,54px)}
.bprin-item{border-top:2px solid var(--vermilion);padding-top:20px}
.bprin-item h3{margin:0 0 10px;font-size:1.05rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}
.bprin-item p{margin:0;font-size:.95rem;line-height:1.65;color:var(--slate)}
.band-slate .bprin-item h3{color:var(--paper)}
.band-slate .bprin-item p{color:var(--stone)}
@media (max-width:820px){ .bprin{grid-template-columns:1fr;gap:26px} }

/* ROUTE BLOCKS — About's exits to People / Practice / Careers */
.broutes{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line)}
.broute{display:block;padding:clamp(24px,3vw,34px) clamp(20px,2.6vw,34px) clamp(26px,3vw,36px) 0; border-right:1px solid var(--line);border-bottom:1px solid transparent;transition:border-bottom-color .3s ease}
.broute:last-child{border-right:0}
.broute:hover,.broute:focus-visible{border-bottom-color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.broute h3{margin:0;font-size:1.15rem;font-weight:700;color:var(--ink);display:flex;align-items:baseline;gap:10px}
.broute-m{color:var(--vermilion);font-weight:400;transition:transform .3s ease}
.broute:hover .broute-m{transform:translateX(5px)}
.broute p{margin:10px 0 0;font-size:.92rem;line-height:1.6;color:var(--slate);max-width:32ch}
@media (max-width:820px){
  .broutes{grid-template-columns:1fr}
  .broute{border-right:0;border-bottom:1px solid var(--line);padding-right:0}
}

/* CAREERS — openings as one hairline register, not a stack of framed panels.
   With nothing open the previous layout produced two near-identical dead blocks;
   the track label and its status now sit on a single rule-divided row and the
   postings nest under it when they exist. */
.opn{margin-top:clamp(32px,4.5vw,46px);border-top:1px solid var(--line)}
.opn-track{border-bottom:1px solid var(--line)}
.opn-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px; flex-wrap:wrap;padding:20px 0}
.opn-head h3{margin:0;font-size:clamp(1.1rem,1.8vw,1.3rem);font-weight:700;color:var(--ink);letter-spacing:-.01em}
.opn-count{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--slate)}
.opn-count.is-open{color:var(--vermilion)}
.opn-intro{padding-bottom:20px;max-width:70ch}
.opn-list{list-style:none;margin:0;padding:0 0 8px}
.opn-item{display:flex;align-items:baseline;gap:20px;flex-wrap:wrap; padding:16px 0 16px 22px;border-top:1px dashed var(--line)}
.opn-item-main{flex:1;min-width:min(100%,240px)}
.opn-item h4{margin:0;font-size:1rem;font-weight:700;color:var(--ink)}
.opn-item p{margin:6px 0 0;font-size:.9rem;color:var(--slate);line-height:1.6}
.opn-tag{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600; color:var(--slate);border:1px solid var(--line);border-radius:999px;padding:4px 11px}
.opn-link{flex:0 0 auto}
@media (max-width:600px){ .opn-item{padding-left:0} }
.car-apply .pa-body{margin-top:14px;color:var(--stone)}
.car-apply .pa-body p{color:var(--stone)}
.car-apply-mail{margin:22px 0 0;font-size:clamp(1.1rem,2vw,1.4rem)}

/* CONTACT */
.contact-dir{margin:24px 0 0}
.contact-route-lead{margin:18px 0 0;max-width:56ch;color:var(--slate);line-height:1.65}
/* routing index reuses the shared .pindex/.prow component (band-stone variants
   already cover it); only the gap under the lead is local */
.contact-pindex{margin-top:clamp(28px,4vw,40px)}

/* SWITCHBOARD ROWS: fixed tracks so titles, sub-areas and key contacts each share
   one left edge; lead-less rows keep alignment via the pinned idx column */
.contact-pindex .prow{grid-template-columns:minmax(0,4fr) minmax(0,5fr) minmax(0,4fr) auto}
.contact-pindex .prow .grp{white-space:normal}
.contact-pindex .prow .idx{grid-column:4}
.plead{display:flex;flex-direction:column;gap:3px}
.plead .pl-k{font-size:.66rem;letter-spacing:.22em;font-weight:600;text-transform:uppercase;color:var(--slate-2)}
.plead .pl-n{font-weight:700;color:var(--ink);font-size:1.02rem;letter-spacing:-.01em;transition:color .2s ease}
.plead .pl-n:hover,.plead .pl-n:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
.plead .pl-c{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:.85rem}
.plead .pl-c a{color:var(--slate);transition:color .2s ease}
.plead .pl-c a:hover,.plead .pl-c a:focus-visible{color:var(--active-text);text-decoration:underline;text-decoration-color:var(--vermilion);text-underline-offset:4px}
@media(max-width:820px) {
  .contact-pindex .prow{grid-template-columns:1fr}
  .contact-pindex .prow .idx{display:none}
}
.contact-route-foot{margin-top:clamp(26px,3.4vw,36px);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.contact-notice{border-left:2px solid var(--vermilion);padding:4px 0 4px 22px;max-width:72ch}
.contact-notice p{margin:0 0 14px;font-size:.92rem;line-height:1.7;color:var(--slate)}

/* LEGAL */
.legal-grid{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:clamp(36px,6vw,80px);align-items:start}
.legal-body{max-width:68ch}
.legal-body p{margin:0 0 1.3em}
.legal-rail{position:sticky;top:calc(var(--header-h) + 28px);display:grid;gap:26px}
.legal-rail-block{border-top:1px solid var(--line);padding-top:14px}
.legal-rail-block p{margin:8px 0 0;font-size:.92rem;line-height:1.6;color:var(--slate)}
@media (max-width:900px){
  .legal-grid{grid-template-columns:1fr;gap:34px}
  .legal-rail{position:static}
}

/* Contrast guard over hero photography, fading into the original image. */
.site-header:not(.scrolled)::before{content:"";position:absolute;inset:0 0 -80px;z-index:-1;pointer-events:none;background:linear-gradient(to bottom,rgba(28,34,40,.88),rgba(28,34,40,.70) calc(100% - 80px),transparent)}

/* Keep small interactive text readable; use the brand red for its underline. */
:root{--active-text:var(--ink)}
.site-header:not(.scrolled),.overlay,.hero-e,.pa-hero,.bio-hero,footer{--active-text:var(--paper)}
.mega,.site-header.scrolled{--active-text:var(--ink)}
