
:root{
  --maxw:1200px;
  /* Typography is served first-party. If NexBridge later self-hosts Instrument Serif
     and Inter as WOFF2 in assets/fonts/, add the @font-face rules below and prepend the
     family names here. Until then these stacks avoid any third-party font request. */
  --font-display:'Iowan Old Style','Palatino Linotype',Palatino,'Book Antiqua',Georgia,'Times New Roman',serif;
  --font-body:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  --r:2px;
}
/* --- NexBridge palette: Ink & Warm Pewter (locked) --- */
:root{
  --s1:#FAF8F4;   /* linen      - primary surface   */
  --s2:#F1EDE6;   /* warm stone - secondary surface */
  --s3:#E6E0D7;   /* greige     - tertiary surface  */
  --text:#1A1714; --mute:#655D55;
  --accent:#6A6058; --accent-ink:#FAF8F4;   /* warm pewter; darkened for WCAG AA */
  --line:rgba(26,23,20,.13); --line-strong:rgba(26,23,20,.26);
  --ink-deep:#15120F;      /* footer surface — the one dark surface on the site */
  --linen-soft:#FAF8F4;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:var(--font-body);background:var(--s1);color:var(--text);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;transition:background .6s,color .6s;}
a{color:inherit;text-decoration:none;}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:400;letter-spacing:-.015em;line-height:1.08;}
p{color:var(--mute);line-height:1.6;font-size:15px;}
.label{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;
  color:var(--accent);display:block;margin-bottom:18px;}
/* single pewter accent mark - carried over from the social card treatment */
.phero .label::before,.blockhead .label::before,.narrow .label::before{
  content:"";display:block;width:44px;height:2px;background:var(--accent);margin-bottom:16px;}
.blockhead .label::before{margin-left:auto;margin-right:auto;}
.blockhead{text-align:center;max-width:730px;margin:0 auto 56px;}
.blockhead h2{font-size:clamp(28px,3.6vw,44px);margin-bottom:16px;}
.blockhead .sub{font-family:var(--font-display);font-style:italic;font-size:19px;color:var(--mute);}
.btn{display:inline-flex;align-items:center;gap:9px;font-weight:500;font-size:13px;
  letter-spacing:.02em;padding:15px 28px;border-radius:var(--r);cursor:pointer;
  border:1px solid transparent;transition:background .3s,color .3s,border-color .3s;}
.btn-primary{background:var(--accent);color:var(--accent-ink);}
.btn-primary:hover{background:var(--text);color:var(--s1);}
.btn-line{background:transparent;border:1px solid var(--line-strong);color:var(--text);}
.btn-line:hover{border-color:var(--text);background:var(--s2);}
.tlink{font-size:13px;font-weight:500;display:inline-flex;gap:8px;padding-bottom:4px;
  border-bottom:1px solid var(--accent);transition:gap .25s;}
.tlink:hover{gap:14px;}

.topbar{background:var(--s3);text-align:center;font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;padding:11px 16px;font-weight:500;color:var(--mute);transition:background .6s;}
.topbar em{color:var(--accent);font-style:normal;}
header{position:sticky;top:0;z-index:60;background:var(--s1);border-bottom:1px solid var(--line);transition:background .6s;}
/* Header container is 1280px wide with 40px padding, so its inner box is exactly
   1200px — identical to the --maxw content column, keeping the logo optically
   aligned with page content at every width while giving the navigation the 80px
   it was previously short of. The explicit gap makes it structurally impossible
   for the logo, links and CTA to touch: gap is a minimum, honoured before any
   free space is distributed by space-between. */
.nav{display:flex;align-items:center;justify-content:space-between;
  gap:24px;padding:18px 40px;max-width:1280px;margin:0 auto;}
.nav > .logo,.nav > .navcta{flex:0 0 auto;}
.navlinks{min-width:0;}
.logo{display:inline-flex;align-items:center;}
.logo img{height:28px;width:auto;display:block;}
footer .logo img{height:30px;}
.navlinks{display:flex;gap:20px;font-size:13px;font-weight:500;align-items:center;}
.navlinks > a,.navlinks > .drop > span{color:var(--mute);transition:color .2s;cursor:pointer;}
.navlinks > a:hover,.navlinks > .drop:hover > span{color:var(--text);}
.navlinks a.here{color:var(--text);}
.drop{position:relative;}
.drop-menu{position:absolute;top:26px;left:-18px;min-width:280px;background:var(--s1);
  border:1px solid var(--line);padding:10px 0;opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity .22s,transform .22s,visibility .22s;}
.drop:hover .drop-menu{opacity:1;visibility:visible;transform:none;}
.drop-menu a{display:block;padding:10px 20px;font-size:13px;color:var(--mute);font-weight:400;}
.drop-menu a:hover{background:var(--s2);color:var(--text);}
.drop-menu a b{display:block;font-weight:500;color:var(--text);font-size:13px;margin-bottom:2px;}
.drop-menu a span{font-size:11.5px;color:var(--mute);}
.navcta{display:flex;align-items:center;gap:20px;}
.navlinks .menu-portal{display:none;}
.navcta .mini{font-size:12px;color:var(--mute);}

/* ---------- skip link ----------
   Visually removed from flow but kept in the accessibility tree and in the
   tab order. Never display:none / visibility:hidden / aria-hidden, all of
   which would take it out of the tab order and defeat the purpose. */
.skiplink{position:absolute;left:-9999px;top:0;z-index:200;
  padding:12px 20px;background:var(--accent);color:var(--accent-ink);
  font-size:13px;font-weight:500;text-decoration:none;border-radius:0 0 2px 0;}
.skiplink:focus{left:0;}
.skiplink:focus-visible{outline:2px solid var(--text);outline-offset:2px;}

/* ---------- menu toggle ----------
   Absent above the navigation collapse breakpoint. The media query at 1100px
   is what turns it on; this is its resting state and its appearance. */
.navtoggle{display:none;align-items:center;gap:10px;
  -webkit-appearance:none;appearance:none;background:none;border:0;
  margin:0;padding:8px 2px;font:inherit;font-size:13px;font-weight:500;
  color:var(--mute);cursor:pointer;line-height:1;transition:color .2s;}
.navtoggle:hover{color:var(--text);}
.navtoggle[aria-expanded="true"]{color:var(--text);}
.navtoggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
.navtoggle .bars{position:relative;display:block;width:18px;height:12px;flex:none;}
.navtoggle .bars::before,.navtoggle .bars::after,.navtoggle .bars i{
  content:"";position:absolute;left:0;width:100%;height:1px;background:currentColor;
  transition:transform .25s ease,opacity .2s ease,top .25s ease;}
.navtoggle .bars::before{top:0;}
.navtoggle .bars i{top:5.5px;display:block;}
.navtoggle .bars::after{top:11px;}
.navtoggle[aria-expanded="true"] .bars::before{top:5.5px;transform:rotate(45deg);}
.navtoggle[aria-expanded="true"] .bars i{opacity:0;}
.navtoggle[aria-expanded="true"] .bars::after{top:5.5px;transform:rotate(-45deg);}

/* ---------- dropdown triggers ----------
   Real <button> elements, for keyboard and screen-reader correctness.
   Every native button affordance is reset so they read as navigation links. */
.drop > button{-webkit-appearance:none;appearance:none;background:none;border:0;
  margin:0;padding:0;font:inherit;font-size:13px;font-weight:500;line-height:inherit;
  color:var(--mute);cursor:pointer;display:inline-flex;align-items:center;gap:6px;
  text-align:left;transition:color .2s;}
.drop > button::-moz-focus-inner{border:0;padding:0;}
.drop > button:hover,.drop:hover > button,
.drop > button[aria-expanded="true"]{color:var(--text);}
.drop > button:focus-visible{outline:2px solid var(--accent);outline-offset:4px;}
.drop > button .chev{width:7px;height:7px;flex:none;border-right:1px solid currentColor;
  border-bottom:1px solid currentColor;transform:rotate(45deg) translate(-2px,-2px);
  transition:transform .25s ease;}
.drop > button[aria-expanded="true"] .chev{transform:rotate(-135deg) translate(-2px,-2px);}

/* keyboard/pointer parity: the panel opens on hover and on aria-expanded */
.drop > button[aria-expanded="true"] + .drop-menu{opacity:1;visibility:visible;transform:none;}
.drop-menu a:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;background:var(--s2);}
.navlinks > a:focus-visible,.navcta .mini:focus-visible,.logo:focus-visible{
  outline:2px solid var(--accent);outline-offset:4px;}
.btn:focus-visible{outline:2px solid var(--text);outline-offset:3px;}

/* ---------- classes replacing former inline styles ----------
   The public CSP is style-src 'self' with no 'unsafe-inline', so every style
   the browser applies has to arrive from this file. ---------- */
.actionrow{margin-top:24px;display:flex;gap:22px;flex-wrap:wrap;align-items:center;}
.leadnote{max-width:780px;margin:0 auto;text-align:center;font-size:16px;}
.spacer-56{height:56px;}

/* ---------- legal page (was an inline <style> block in legal.html) ---------- */
.legalwrap{max-width:820px;margin:0 auto;padding:0 40px 90px;}
.legalwrap h2{font-size:clamp(24px,3vw,32px);margin:56px 0 18px;padding-top:36px;
  border-top:1px solid var(--line-strong);}
.legalwrap h2:first-of-type{border-top:none;padding-top:0;margin-top:0;}
.legalwrap h3{font-family:var(--font-body);font-size:16px;font-weight:600;margin:30px 0 10px;}
.legalwrap p,.legalwrap li{font-size:15px;line-height:1.7;color:var(--mute);margin-bottom:14px;}
.legalwrap ul{padding-left:20px;margin-bottom:18px;}
.legalwrap li{margin-bottom:8px;}
.legalwrap dl{display:grid;grid-template-columns:220px 1fr;gap:10px 24px;margin:20px 0;}
.legalwrap dt{font-size:13px;font-weight:600;color:var(--text);}
.legalwrap dd{font-size:14px;color:var(--mute);}
.legalwrap .toc{background:var(--s2);padding:24px 28px;margin-bottom:44px;}
.legalwrap .toc a{display:block;padding:5px 0;font-size:14px;font-weight:500;}
.legalwrap .toc a:hover{color:var(--accent);}
.counsel{border-left:2px solid var(--accent);background:var(--s2);padding:20px 24px;margin:26px 0;}
.counsel p{margin-bottom:0;font-size:13.5px;}
@media(max-width:760px){
  .legalwrap{padding:0 22px 60px;}
  .legalwrap dl{grid-template-columns:1fr;gap:2px 0;}
  .legalwrap dt{margin-top:12px;}
}

.navcta .mini:hover{color:var(--accent);}

/* page hero */
.phero{padding:84px 40px 0;background:var(--s1);transition:background .6s;}
.phero-in{max-width:var(--maxw);margin:0 auto;}
.crumb{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-bottom:26px;}
.crumb a:hover{color:var(--accent);}
.phero h1{font-size:clamp(34px,4.6vw,60px);max-width:940px;line-height:1.07;}
.phero h1 i{font-style:italic;color:var(--accent);}
.phero .lede{font-size:16.5px;max-width:640px;margin-top:24px;}
.phero-actions{display:flex;align-items:center;gap:26px;margin-top:38px;flex-wrap:wrap;}
.phero-note{font-size:11.5px;color:var(--mute);margin-top:16px;}
.trustbar{display:flex;margin-top:72px;border-top:1px solid var(--line-strong);}
.trustbar div{flex:1;padding:22px 22px 28px 0;border-right:1px solid var(--line);}
.trustbar div:last-child{border-right:none;}
.trustbar b{display:block;font-family:var(--font-display);font-size:19px;font-weight:400;margin-bottom:5px;}
.trustbar span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);}
.jurisbar{background:var(--s2);padding:15px 40px;transition:background .6s;}
.jurisbar-in{max-width:var(--maxw);margin:0 auto;display:flex;gap:14px;flex-wrap:wrap;align-items:center;
  font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);}
.jurisbar-in b{font-weight:500;color:var(--accent);}

.sec{padding:96px 40px;transition:background .6s;}
.sec-1{background:var(--s1);} .sec-2{background:var(--s2);} .sec-3{background:var(--s3);}
.narrow{max-width:760px;margin:0 auto;}
.narrow h2{font-size:clamp(26px,3.2vw,38px);margin-bottom:20px;}
.narrow p{margin-bottom:16px;}
.narrow h3{font-family:var(--font-body);font-size:17px;font-weight:600;margin:34px 0 10px;}

.igrid{max-width:var(--maxw);margin:0 auto;display:grid;
  border-top:1px solid var(--line-strong);border-left:1px solid var(--line);}
.igrid.c2{grid-template-columns:repeat(2,1fr);}
.igrid.c3{grid-template-columns:repeat(3,1fr);}
.igrid.c4{grid-template-columns:repeat(4,1fr);}
.item{border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:32px 30px;transition:background .3s;}
.item:hover{background:var(--s1);}
.sec-1 .item:hover{background:var(--s2);}
.item .n{font-size:10.5px;letter-spacing:.18em;color:var(--accent);font-weight:500;display:block;margin-bottom:26px;}
.item h3{font-family:var(--font-body);font-size:15.5px;font-weight:600;letter-spacing:-.01em;margin-bottom:9px;line-height:1.35;}
.item p{font-size:13.5px;line-height:1.55;}
.item .go{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-top:20px;transition:color .25s;}
.item:hover .go{color:var(--accent);}

.fitwrap{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:1fr 1fr;
  border-top:1px solid var(--line-strong);border-left:1px solid var(--line);}
.fit{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:40px 36px;}
.fit h3{font-size:26px;margin-bottom:22px;}
.fit ul{list-style:none;}
.fit li{font-size:14px;color:var(--mute);line-height:1.55;padding:14px 0;border-top:1px solid var(--line);
  display:grid;grid-template-columns:20px 1fr;}
.fit li:first-child{border-top:none;padding-top:0;}
.fit li em{font-style:normal;color:var(--accent);}

.steps{max-width:var(--maxw);margin:0 auto;display:grid;border-top:1px solid var(--line-strong);}
.steps.s3{grid-template-columns:repeat(3,1fr);}
.steps.s4{grid-template-columns:repeat(4,1fr);}
.step{padding:32px 32px 0 0;border-right:1px solid var(--line);}
.step:last-child{border-right:none;}
.step .num{font-family:var(--font-display);font-size:32px;color:var(--accent);display:block;margin-bottom:16px;line-height:1;}
.step h3{font-family:var(--font-body);font-size:15px;font-weight:600;margin-bottom:9px;}
.step p{font-size:13.5px;}

.faq{max-width:900px;margin:0 auto;border-top:1px solid var(--line-strong);}
.q{border-bottom:1px solid var(--line);}
.q button{width:100%;background:none;border:0;text-align:left;cursor:pointer;padding:22px 40px 22px 0;
  font-family:var(--font-body);font-size:15px;font-weight:500;color:var(--text);position:relative;}
.q button::after{content:"+";position:absolute;right:6px;top:50%;transform:translateY(-50%);
  color:var(--accent);font-size:17px;}
.q.open button::after{content:"\2013";}
/* Answers are present and readable with JavaScript disabled. The script closes
   them on load and toggles the [hidden] attribute thereafter, so no inline style
   is ever written — the public CSP is style-src 'self' with no 'unsafe-inline'.
   [hidden] removes the panel from the accessibility tree as well as the page,
   which is the correct behaviour for a collapsed disclosure. */
.q .a{overflow:hidden;}
.q .a[hidden]{display:none;}
.q button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.js-faq .q .a:not([hidden]){animation:faqIn .28s ease both;}
@keyframes faqIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion: reduce){
  .js-faq .q .a:not([hidden]){animation:none;}
}
.q .a p{font-size:14px;padding:0 60px 24px 0;}

.final{padding:120px 40px;text-align:center;background:var(--s2);transition:background .6s;}
.final-in{max-width:700px;margin:0 auto;}
.final h2{font-size:clamp(30px,4vw,50px);margin-bottom:16px;}
.final p{margin-bottom:32px;}
.final .label{margin:0 auto 22px;width:max-content;}
.finalnote{font-size:11.5px;color:var(--mute);margin-top:22px;}

.disclaim{text-align:center;max-width:680px;margin:36px auto 0;font-size:12px;color:var(--mute);}
.cform{max-width:760px;margin:0 auto;border-top:1px solid var(--line-strong);}
.cform .row{padding:24px 0;border-bottom:1px solid var(--line);}
.cform .row h3{font-family:var(--font-body);font-size:15px;font-weight:600;margin-bottom:8px;}
.cform .row p{font-size:14px;margin:0;}
.cform .actions{padding:28px 0 0;display:flex;gap:24px;align-items:center;flex-wrap:wrap;}
.cform .privacy{font-size:11.5px;color:var(--mute);line-height:1.65;margin-top:20px;}
/* ============================================================
   CONSULTATION FORM
   First-party. No framework, no third-party widget.
   ============================================================ */
.cform{max-width:720px;margin:0 auto;}
.cform > .frow:first-child{border-top:1px solid var(--line-strong);}

.frow{padding:26px 0;border-bottom:1px solid var(--line);}
.flab{display:block;font-size:13px;font-weight:600;letter-spacing:-.005em;
  color:var(--text);margin-bottom:10px;line-height:1.4;}
.flab .req{color:var(--accent);font-weight:400;margin-left:2px;}
.fopt{display:inline-block;margin-left:8px;font-weight:400;color:var(--mute);
  font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;vertical-align:1px;}
.fhint{display:block;font-size:12.5px;line-height:1.5;color:var(--mute);
  font-weight:400;margin-top:5px;}

.cform input[type=text],
.cform input[type=email],
.cform select,
.cform textarea{
  display:block;width:100%;font-family:var(--font-body);font-size:15px;line-height:1.5;
  color:var(--text);background:var(--s1);border:1px solid var(--line-strong);
  border-radius:var(--r);padding:13px 15px;min-height:48px;
  transition:border-color .2s ease,box-shadow .2s ease;-webkit-appearance:none;appearance:none;}
.cform textarea{min-height:150px;resize:vertical;}
.cform select{
  background-image:linear-gradient(45deg,transparent 50%,var(--mute) 50%),
                   linear-gradient(135deg,var(--mute) 50%,transparent 50%);
  background-position:calc(100% - 20px) calc(50% + 2px),calc(100% - 15px) calc(50% + 2px);
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:44px;cursor:pointer;}
.cform input::placeholder,.cform textarea::placeholder{color:var(--mute);opacity:.7;}

.cform input:hover,.cform select:hover,.cform textarea:hover{border-color:var(--mute);}
.cform input:focus-visible,.cform select:focus-visible,.cform textarea:focus-visible,
.cform input:focus,.cform select:focus,.cform textarea:focus{
  outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent);}
.cform [aria-invalid="true"]{border-color:#8C3A3A;box-shadow:0 0 0 1px rgba(140,58,58,.18);}
.cform [aria-invalid="true"]:focus{outline-color:#8C3A3A;}
.cform input:disabled,.cform select:disabled,.cform textarea:disabled{
  opacity:.55;cursor:not-allowed;background:var(--s2);}

/* consent */
.fconsent{padding-top:26px;}
.fcheck{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start;
  font-size:13.5px;line-height:1.6;color:var(--mute);font-weight:400;cursor:pointer;}
.fcheck input[type=checkbox]{width:18px;height:18px;margin:2px 0 0;flex:none;
  accent-color:var(--accent);cursor:pointer;}
.fcheck input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
.fcheck .req{color:var(--accent);}

/* honeypot: removed from the accessibility tree and from view, but still submitted
   by automated agents that fill every field. Not display:none, which some bots skip. */
.hp{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;}

/* actions + status */
.factions{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:28px 0 0;}
.factions .btn{min-width:180px;justify-content:center;}
.factions .btn[disabled]{opacity:.6;cursor:progress;}
.fstatus{margin:0;font-size:12.5px;color:var(--mute);min-height:1.3em;flex:1 1 200px;}

/* validation / server error */
.falert{margin-top:20px;padding:14px 16px;border-radius:var(--r);font-size:13.5px;line-height:1.55;
  color:#7A3232;background:#F7EBEB;border:1px solid rgba(140,58,58,.28);}
.falert:focus{outline:2px solid #8C3A3A;outline-offset:2px;}

.cform .privacy{margin-top:24px;font-size:11.5px;line-height:1.7;color:var(--mute);}

/* success */
.fsuccess{max-width:720px;margin:0 auto;padding:36px 38px;
  background:var(--s2);border-left:2px solid var(--accent);}
.fsuccess:focus{outline:2px solid var(--accent);outline-offset:4px;}
.fsuccess h3{font-family:var(--font-display);font-size:27px;font-weight:400;
  letter-spacing:-.015em;line-height:1.15;margin-bottom:16px;}
.fsuccess p{font-size:14.5px;line-height:1.65;margin-bottom:12px;}
.fsuccess p:last-child{margin-bottom:0;}
.fsuccess b{color:var(--text);font-weight:600;letter-spacing:.04em;}


.callout{max-width:var(--maxw);margin:0 auto;border-left:2px solid var(--accent);
  background:var(--s2);padding:28px 32px;}
.callout b{display:block;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);margin-bottom:10px;font-weight:500;}
.callout p{font-size:14px;margin-bottom:10px;}
.callout p:last-child{margin-bottom:0;}
.deftable{max-width:var(--maxw);margin:0 auto;border-top:1px solid var(--line-strong);}
.defrow{display:grid;grid-template-columns:.9fr 2.1fr;gap:40px;padding:22px 0;border-bottom:1px solid var(--line);}
.defrow b{font-family:var(--font-body);font-size:14px;font-weight:600;}
.defrow span{font-size:14px;color:var(--mute);line-height:1.6;}
/* Reveal animation is a progressive enhancement. Content is visible by default.
   The hidden start state is applied only after site.js has confirmed IntersectionObserver
   is available and has wired the observer, and is removed again on any error or timeout. */
/* ============================================================
   FOOTER
   An earned surface change: ink, to close the page decisively
   and separate the firm record from the reading surface above.
   Deliberately not a repeat of the top navigation.
   ============================================================ */
footer{background:var(--ink-deep);color:var(--linen-soft);padding:72px 40px 44px;}
.fin{max-width:var(--maxw);margin:0 auto;display:grid;
  grid-template-columns:minmax(280px,1.15fr) minmax(320px,1.6fr);gap:64px;align-items:start;}
footer .logo{display:block;margin-bottom:22px;}
footer .logo img{height:30px;width:auto;filter:invert(1) brightness(1.08);opacity:.92;}
.flegal{font-size:12.5px;line-height:1.85;color:rgba(250,248,244,.62);max-width:46ch;}
.flegal b{color:rgba(250,248,244,.9);font-weight:500;}
.flegal .rule{display:block;width:44px;height:1px;background:rgba(250,248,244,.28);margin:20px 0;}
.fcols{display:grid;grid-template-columns:repeat(3,1fr);gap:38px;}
.fcol b{display:block;font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(250,248,244,.5);margin-bottom:16px;font-weight:500;}
.fcol a{display:block;padding:7px 0;font-size:14px;line-height:1.4;
  color:rgba(250,248,244,.85);border-bottom:1px solid transparent;width:fit-content;
  transition:color .2s ease,border-color .2s ease;}
.fcol a:hover{color:#fff;border-bottom-color:rgba(250,248,244,.5);}
.fcol.primary a{font-size:15px;}
.fbase{max-width:var(--maxw);margin:56px auto 0;padding-top:26px;
  border-top:1px solid rgba(250,248,244,.16);
  display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;
  font-size:12px;color:rgba(250,248,244,.5);}
.fbase a{border-bottom:1px solid rgba(250,248,244,.3);padding-bottom:1px;}
.fbase a:hover{color:#fff;}

/* ============================================================
   NEXBRIDGE LINE MOTIF
   Derived from the crossing paths of the mark. Used sparingly:
   the engagement spine, and the jurisdiction matrix rule.
   ============================================================ */
.spine{max-width:var(--maxw);margin:0 auto;position:relative;}
.spine ol{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:0;position:relative;}
.spine ol::before{content:"";position:absolute;left:0;right:0;top:13px;height:1px;
  background:linear-gradient(to right,transparent,var(--line-strong) 8%,var(--line-strong) 92%,transparent);}
.spine li{position:relative;padding:0 40px 0 0;}
.spine li:last-child{padding-right:0;}
.spine .node{position:relative;z-index:2;display:flex;align-items:center;gap:12px;margin-bottom:22px;}
.spine .dot{width:27px;height:27px;flex:none;border-radius:50%;background:var(--s1);
  border:1px solid var(--accent);display:grid;place-items:center;
  font-family:var(--font-display);font-size:13px;color:var(--accent);}
.spine .stage{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);}
.spine h3{font-family:var(--font-body);font-size:16px;font-weight:600;
  letter-spacing:-.01em;margin-bottom:10px;}
.spine p{font-size:14px;line-height:1.6;max-width:34ch;}

/* jurisdiction matrix — a comparison, not a row of cards */
.matrix{max-width:var(--maxw);margin:0 auto;width:100%;border-collapse:collapse;}
.matrix caption{text-align:left;font-size:13px;color:var(--mute);padding-bottom:18px;}
.matrix th,.matrix td{text-align:left;vertical-align:top;padding:20px 24px 20px 0;
  border-bottom:1px solid var(--line);}
.matrix thead th{border-bottom:1px solid var(--line-strong);padding-bottom:14px;}
.matrix thead th:first-child{width:22%;}
.matrix .juris{font-family:var(--font-display);font-size:22px;font-weight:400;line-height:1.15;}
.matrix .juris span{display:block;font-family:var(--font-body);font-size:10.5px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-top:7px;}
.matrix .rowlab{font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--mute);font-weight:500;padding-right:28px;}
.matrix td{font-size:14px;line-height:1.6;color:var(--mute);}
.matrix tr:last-child td,.matrix tr:last-child th{border-bottom:none;}

/* ============================================================
   FOUNDER DECISION SEQUENCE — editorial, not a card grid
   ============================================================ */
.seq{max-width:840px;margin:0 auto;}
.seq li{list-style:none;display:grid;grid-template-columns:64px 1fr;gap:28px;
  padding:30px 0;border-top:1px solid var(--line);}
.seq li:first-child{border-top:1px solid var(--line-strong);}
.seq .mark{font-family:var(--font-display);font-size:30px;color:var(--accent);line-height:1;}
.seq h3{font-family:var(--font-body);font-size:16.5px;font-weight:600;margin-bottom:8px;}
.seq p{font-size:14.5px;line-height:1.65;max-width:60ch;}

/* ============================================================
   TYPOGRAPHY REFINEMENTS
   ============================================================ */
.blockhead.left{text-align:left;margin-left:0;max-width:760px;}
.blockhead.left .label::before{margin-left:0;}
.lede,.narrow p,.item p{max-width:66ch;}
.label{font-size:11px;}

/* ============================================================
   RESPONSIVE
   Navigation collapses at 1100px because the top bar crowds
   between roughly 1000 and 1100. A true phone breakpoint at
   620px takes every multi-column grid to a single column.
   ============================================================ */
@media(max-width:1180px){
  .sec{padding:84px 32px;} .phero{padding:72px 32px 0;}
  footer{padding:64px 32px 40px;}
  .fin{gap:44px;}
}

@media(max-width:1100px){
  .igrid.c4{grid-template-columns:repeat(2,1fr);}
}

/* NAVIGATION COLLAPSE — 1280px.
   Measured budget: logo 177 + links 538 + portal label 144 + CTA 257 = ~1116px of
   content before any separating space. Below 1280 the inner box cannot carry that
   with deliberate spacing, so the full desktop navigation is not attempted there.
   The previous 1100px breakpoint is what produced the compressed 1101-1280 band. */
@media(max-width:1280px){
  .nav{padding:14px 24px;position:relative;flex-wrap:wrap;gap:16px;}
  .navtoggle{display:inline-flex;order:3;}
  .navcta{order:2;gap:14px;}
  /* The portal link moves into the menu panel when collapsed. The legal page uses a
     reduced header (.nav-min) with no menu at all, so its 'Return to site' link must
     stay visible — otherwise that page loses its only route back below 1280px. */
  .nav:not(.nav-min) .navcta .mini{display:none;}
  .navcta .btn{padding:12px 18px;font-size:12px;}
  .navlinks{display:none;order:4;position:absolute;top:100%;left:0;right:0;z-index:70;
    background:var(--s1);border-top:1px solid var(--line);border-bottom:1px solid var(--line-strong);
    flex-direction:column;align-items:stretch;gap:0;padding:0 0 12px;
    max-height:calc(100vh - 72px);overflow-y:auto;}
  .navlinks.open{display:flex;}
  .navlinks > a,.drop > button{padding:15px 24px;width:100%;justify-content:space-between;
    border-top:1px solid var(--line);font-size:14.5px;}
  .drop{position:static;}
  .drop-menu{position:static;opacity:1;visibility:visible;transform:none;border:0;min-width:0;
    background:var(--s2);padding:0;display:none;}
  .drop > button[aria-expanded="true"] + .drop-menu{display:block;}
  .drop-menu a{padding:13px 24px 13px 38px;border-top:1px solid var(--line);}
  /* Portal destination is preserved at collapsed widths, with the exact label. */
  .navlinks .menu-portal{display:block;}
}

/* Below 560px the logo, the full consultation CTA and the Menu control cannot share
   one row without crowding. Rather than shrink the CTA text, the header wraps to a
   deliberate two-row composition: logo and Menu on the first row, CTA full width
   beneath. The label is never abbreviated. */
@media(max-width:560px){
  .nav{row-gap:12px;}
  .nav-min{flex-wrap:wrap;}
  .navcta{order:4;width:100%;}
  .navcta .btn{width:100%;justify-content:center;}
  .navtoggle{order:2;margin-left:auto;}
}

@media(max-width:1024px){
  .igrid.c3{grid-template-columns:repeat(2,1fr);}
  .fitwrap,.jgrid,.scen,.setup{grid-template-columns:1fr;}
  .principal{grid-template-columns:1fr;gap:36px;}
  .posstrip{grid-template-columns:1fr;gap:30px;}
  .spine ol{grid-template-columns:1fr;}
  .spine ol::before{left:13px;right:auto;top:0;bottom:0;width:1px;height:auto;
    background:linear-gradient(to bottom,transparent,var(--line-strong) 6%,var(--line-strong) 94%,transparent);}
  .spine li{padding:0 0 34px 0;}
  .spine li:last-child{padding-bottom:0;}
  .spine p{max-width:62ch;}
  .fin{grid-template-columns:1fr;gap:44px;}
  .fcols{grid-template-columns:repeat(3,1fr);gap:28px;}
}

@media(max-width:820px){
  .matrix,.matrix thead,.matrix tbody,.matrix tr,.matrix th,.matrix td{display:block;width:auto;}
  .matrix caption{display:block;width:100%;box-sizing:border-box;}
  .matrix thead{display:none;}
  .matrix tr{border-bottom:1px solid var(--line-strong);padding:22px 0;}
  .matrix tr:last-child{border-bottom:none;}
  .matrix td,.matrix th{border-bottom:none;padding:0 0 12px 0;}
  .matrix td::before{content:attr(data-label);display:block;font-size:10.5px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--accent);margin-bottom:5px;}
  .trustbar{flex-wrap:wrap;}
  .trustbar div{flex:1 1 50%;border-right:none;border-bottom:1px solid var(--line);
    padding:18px 18px 18px 0;}
}

/* ---- true phone breakpoint ---- */
@media(max-width:620px){
  .sec{padding:56px 20px;} .phero{padding:44px 20px 0;}
  .nav{padding:13px 20px;} footer{padding:52px 20px 34px;}

  .igrid.c2,.igrid.c3,.igrid.c4,.steps.s3,.steps.s4{grid-template-columns:1fr;}
  .item{padding:26px 22px 26px 0;border-right:none;}
  .igrid{border-left:none;}
  .step{border-right:none;border-bottom:1px solid var(--line);padding:26px 0 24px;}
  .steps{grid-template-columns:1fr;}

  .phero h1{font-size:clamp(28px,8vw,38px);hyphens:auto;}
  .blockhead h2,.narrow h2{font-size:clamp(23px,6.4vw,30px);}
  .blockhead{margin-bottom:36px;}
  .lede{font-size:16px;}
  .trustbar{margin-top:44px;}
  .trustbar div{flex:1 1 100%;padding:16px 0;}
  .phero-actions{gap:16px;}
  .phero-actions .btn{width:100%;justify-content:center;}

  .seq li{grid-template-columns:44px 1fr;gap:18px;padding:24px 0;}
  .seq .mark{font-size:24px;}
  .fitwrap .fit{padding:28px 22px 28px 0;border-right:none;}
  .fsuccess{padding:26px 20px;}

  .fin{gap:36px;}
  .fcols{grid-template-columns:1fr 1fr;gap:24px 20px;}
  .fcol a{padding:9px 0;}
  .flegal{font-size:12px;max-width:none;}
  .fbase{margin-top:38px;flex-direction:column;gap:10px;}
}

@media(max-width:400px){
  .sec{padding:46px 16px;} .phero{padding:38px 16px 0;}
  .nav{padding:12px 16px;} footer{padding:44px 16px 30px;}
  .fcols{grid-template-columns:1fr;gap:22px;}
  .item{padding:22px 0;}
  .navcta .btn{padding:11px 14px;font-size:11.5px;}
  .logo img{height:26px;}
}

/* ============================================================
   PRINCIPAL — TYPOGRAPHIC PORTRAIT
   Held deliberately as type until an approved photograph exists.
   No stock photography is used anywhere on this site.
   ============================================================ */
.pplate{display:grid;grid-template-columns:minmax(260px,.85fr) minmax(320px,1.45fr);
  gap:64px;align-items:start;max-width:var(--maxw);margin:0 auto;}
.pmark{border:1px solid var(--line-strong);background:var(--s2);padding:38px 32px 32px;position:relative;}
.pmark::after{content:"";position:absolute;left:32px;right:32px;top:0;height:1px;background:var(--accent);}
.pmark .initials{font-family:var(--font-display);font-size:clamp(56px,7vw,78px);line-height:.9;
  letter-spacing:-.02em;color:var(--text);margin-bottom:20px;display:block;}
.pmark .pname{font-size:15px;font-weight:600;letter-spacing:-.01em;margin-bottom:4px;display:block;}
.pmark .prole{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);display:block;}
.pmark dl{border-top:1px solid var(--line);margin-top:24px;padding-top:18px;font-size:13px;line-height:1.55;}
.pmark dt{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-top:15px;}
.pmark dt:first-of-type{margin-top:0;}
.pmark dd{color:var(--text);margin-top:3px;}
.pbody h2{margin-bottom:20px;}
.pbody h3{font-family:var(--font-body);font-size:15px;font-weight:600;letter-spacing:-.01em;margin:34px 0 10px;}
.pbody p{max-width:64ch;margin-bottom:15px;}

/* ============================================================
   FOR COMPANIES — institutional register
   A single ruled record rather than a grid of cards.
   ============================================================ */
.record{max-width:var(--maxw);margin:0 auto;border-top:1px solid var(--line-strong);}
.record > div{display:grid;grid-template-columns:minmax(180px,.5fr) 1fr;gap:44px;
  padding:26px 0;border-bottom:1px solid var(--line);}
.record .rk{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);
  padding-top:3px;}
.record .rv2{font-size:15px;line-height:1.65;max-width:62ch;}
.record .rv2 b{font-weight:600;}

@media(max-width:1024px){
  .pplate{grid-template-columns:1fr;gap:40px;}
  .pmark{max-width:430px;}
  .record > div{gap:28px;}
}
@media(max-width:620px){
  .pmark{padding:30px 24px 26px;}
  .record > div{grid-template-columns:1fr;gap:8px;padding:22px 0;}
}

.js-reveal .rv{opacity:0;transform:translateY(14px);transition:opacity .8s,transform .8s;}
.js-reveal .rv.in{opacity:1;transform:none;}
/* Above-the-fold hero copy must never wait for the decorative reveal. The mobile
   performance trace identified hero text as LCP and measured an avoidable ~800ms
   delay between FCP and the final text paint. Below-fold sections retain the reveal. */
.js-reveal .phero .rv{opacity:1;transform:none;transition:none;}
@media (prefers-reduced-motion: reduce){
  .js-reveal .rv,.js-reveal .rv.in{opacity:1;transform:none;transition:none;}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important;}
}

/* Corrected multilingual candidate — 2026-09-01 */
.language-switcher{display:flex;align-items:center;gap:7px;font-size:10px;letter-spacing:.13em;text-transform:uppercase;white-space:nowrap}
.language-switcher a{color:var(--mute);padding:5px 2px;border-bottom:1px solid transparent}.language-switcher a:hover,.language-switcher a:focus-visible,.language-switcher a[aria-current="page"]{color:var(--text);border-bottom-color:var(--accent)}
.mobile-language{display:none}.navcta{gap:16px}.review-ribbon{padding:8px 20px;text-align:center;background:#f4efe5;color:#665f52;font-size:11px;letter-spacing:.08em}
@media(max-width:1280px){.navcta>.language-switcher{display:none}.mobile-language{display:block;padding:12px 24px}.mobile-language .language-switcher{display:flex}.navlinks{max-height:calc(100vh - 110px);overflow:auto}}
@media(max-width:620px){.language-switcher{font-size:11px;gap:9px}.phero h1{overflow-wrap:anywhere}.country-hero h1,.article-hero h1{overflow-wrap:anywhere}}

/* ---------- first-party Request Pricing flow ---------- */
.pricing-request-layout{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(44px,8vw,120px);align-items:start}
.pricing-request-layout>div>p{color:var(--muted);max-width:42rem}
.pricing-request-form{display:grid;gap:21px;padding:clamp(24px,4vw,42px);border:1px solid var(--line);background:var(--paper)}
.pricing-request-form label,.country-multi{display:grid;gap:7px;font-size:13px;color:var(--ink)}
.pricing-request-form input,.pricing-request-form select,.pricing-request-form textarea{width:100%;padding:12px 13px;border:1px solid var(--line-strong);border-radius:0;background:var(--cream);color:var(--ink);font:inherit}
.pricing-request-form input:focus,.pricing-request-form select:focus,.pricing-request-form textarea:focus{outline:2px solid var(--gold);outline-offset:2px}
.pricing-request-form small{color:var(--muted);font-size:11.5px;line-height:1.45}
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.country-multi{border:0;padding:0;margin:0}.country-multi legend{margin-bottom:7px}.country-multi select{min-height:135px}.visually-subtle{color:var(--muted)!important;font-size:11.5px!important}
.consent{grid-template-columns:auto 1fr!important;align-items:start}.consent input{width:auto;margin-top:4px}.consent span{color:var(--muted);line-height:1.55}.consent a{text-decoration:underline}
.form-status{min-height:1.5em;color:#7b2f2f;font-size:12px}.form-honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.pricing-private-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}.pricing-private-item{background:var(--paper);padding:clamp(24px,4vw,44px)}.pricing-private-amount{font:400 clamp(24px,3vw,36px)/1.1 var(--serif);margin:18px 0}.pricing-private-item .small{color:var(--muted);font-size:12.5px}
@media(max-width:820px){.pricing-request-layout{grid-template-columns:1fr}.pricing-private-grid{grid-template-columns:1fr}}
@media(max-width:560px){.field-grid{grid-template-columns:1fr}}
