
  :root{
    --paper:#F4F5F7;
    --paper-deep:#E9EBEF;
    --ink:#14181D;
    --ink-mid:#454C56;
    --ink-soft:#68707B;
    --rule:#D3D7DD;
    --accent:#2B4463;
    --accent-tint:#E6EAF0;
    --accent-2:#1F5A57;
    --accent-2-tint:#E2EDEB;
    --shade:#EDEFF2;
    --serif:"Spectral",Georgia,serif;
    --sans:"IBM Plex Sans",system-ui,sans-serif;
    --mono:"IBM Plex Mono",ui-monospace,monospace;
    --gut:clamp(1.4rem,4vw,3.2rem);
  }

  *,*::before,*::after{box-sizing:border-box;}
  html{-webkit-text-size-adjust:100%;}
  body{
    margin:0;background:var(--paper);color:var(--ink);
    font-family:var(--sans);font-size:17px;line-height:1.65;
    font-feature-settings:"kern";-webkit-font-smoothing:antialiased;
  }
  a{color:inherit;}
  :focus-visible{outline:2px solid var(--accent);outline-offset:3px;}

  /* Skip link. Off-screen until focused, so it reaches a keyboard or screen
     reader user first without appearing for anyone else. The master menu is
     eleven items; this is the way past them. */
  /* Available to a screen reader, absent for everyone else. Used where a
     section is labelled by its stamp and so has no visible heading of its
     own, which would otherwise leave a gap in the heading order. */
  .vh{
    position:absolute;width:1px;height:1px;margin:-1px;padding:0;
    overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
  }

  .skip{
    position:absolute;left:-9999px;top:0;z-index:100;
    font-family:var(--mono);font-size:.74rem;letter-spacing:.1em;
    text-transform:uppercase;text-decoration:none;
    background:var(--accent);color:var(--paper);padding:.7rem 1.1rem;
  }
  .skip:focus{left:0;}

  .wrap{width:100%;max-width:min(94vw,84rem);margin:0 auto;padding:0 var(--gut);}

  /* ---------- masthead ---------- */
  .masthead{border-bottom:1px solid var(--rule);}
  .masthead .wrap{
    display:flex;flex-wrap:wrap;gap:1rem 2rem;
    align-items:baseline;justify-content:space-between;
    padding-top:1.6rem;padding-bottom:1.6rem;
  }
  .mark{
    font-family:var(--mono);font-size:.74rem;letter-spacing:.14em;
    text-transform:uppercase;color:var(--ink-mid);text-decoration:none;
  }
  .mark b{color:var(--ink);font-weight:500;}
  .nav{display:flex;flex-wrap:wrap;gap:1.4rem;list-style:none;margin:0;padding:0;}
  .nav a{
    font-family:var(--mono);font-size:.74rem;letter-spacing:.1em;
    text-transform:uppercase;color:var(--ink-mid);
    text-decoration:none;padding-bottom:2px;border-bottom:1px solid transparent;
  }
  .nav a:hover{color:var(--accent);border-bottom-color:var(--accent);}

  /* ---------- per-page section bar ----------
     the master menu above stays identical on every page; this second bar
     carries only the sections of the page you are on, so a page's own
     contents never replace the site navigation. */
  .subnav{border-bottom:1px solid var(--rule);background:var(--paper-deep);}
  .subnav .wrap{padding-top:.75rem;padding-bottom:.75rem;}
  .subnav ul{display:flex;flex-wrap:wrap;gap:.45rem 1.4rem;list-style:none;margin:0;padding:0;}
  .subnav a{
    font-family:var(--mono);font-size:.68rem;letter-spacing:.09em;
    text-transform:uppercase;color:var(--ink-soft);
    text-decoration:none;padding-bottom:2px;border-bottom:1px solid transparent;
  }
  .subnav a:hover,.subnav a:focus-visible{color:var(--accent-2);border-bottom-color:var(--accent-2);}

  /* on a phone the two bars would otherwise eat close to 40% of the screen
     before any content: tighten both, and let the section bar scroll
     sideways as one row instead of wrapping to three. */
  @media (max-width:720px){
    .masthead .wrap{padding-top:1rem;padding-bottom:1rem;gap:.7rem 1rem;}
    .nav{gap:.5rem 1rem;}
    .nav a{font-size:.68rem;letter-spacing:.06em;}
    .subnav .wrap{padding-top:.5rem;padding-bottom:.5rem;}
    .subnav ul{
      flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
      scrollbar-width:none;gap:1.1rem;
    }
    .subnav ul::-webkit-scrollbar{display:none;}
    .subnav li{flex:0 0 auto;}
  }

  /* ---------- front matter ---------- */
  .front{padding:5.5rem 0 4.5rem;}
  .rise{opacity:0;transform:translateY(10px);animation:rise .7s cubic-bezier(.2,.7,.3,1) forwards;}
  .rise:nth-child(2){animation-delay:.08s}
  .rise:nth-child(3){animation-delay:.16s}
  .rise:nth-child(4){animation-delay:.24s}
  @keyframes rise{to{opacity:1;transform:none;}}

  .front h1{
    font-family:var(--serif);font-weight:400;
    font-size:clamp(2.7rem,7vw,4.6rem);line-height:1.02;
    letter-spacing:-.022em;margin:0 0 1.1rem;
  }
  .standfirst{
    font-family:var(--serif);font-style:italic;font-weight:300;
    font-size:clamp(1.15rem,2.4vw,1.4rem);line-height:1.5;
    color:var(--ink-mid);margin:0 0 2.2rem;max-width:44ch;
  }
  .keywords{
    display:flex;flex-wrap:wrap;gap:.5rem .9rem;
    margin:0 0 2.4rem;padding:1rem 0;
    border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
    font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;
    text-transform:uppercase;color:var(--ink-soft);
  }
  .keywords span::after{content:"";}
  .abstract{max-width:64ch;font-size:1.06rem;}
  .abstract p{margin:0 0 1.1rem;}
  .abstract p:last-child{margin-bottom:0;}

  /* ---------- front matter grid + portrait plate ---------- */
  .front-grid{display:grid;grid-template-columns:minmax(0,1fr) 14rem;gap:0 3.5rem;align-items:start;}
  /* the text column is its own container, so the headline can be sized from it */
  .front-grid>div:first-child{container-type:inline-size;width:100%;}
  .plate{margin:.6rem 0 0;padding:0;}
  .plate img{
    display:block;width:100%;height:auto;
    border:1px solid var(--rule);
    filter:saturate(.92);
  }
  .plate figcaption{
    font-family:var(--mono);font-size:.66rem;letter-spacing:.09em;
    text-transform:uppercase;color:var(--ink-soft);
    margin-top:.7rem;line-height:1.5;
  }
  @media (max-width:720px){
    .front-grid{display:flex;flex-direction:column;}
    .plate{order:-1;max-width:9.5rem;margin:0 0 1.8rem;}
  }

  /* ---------- generic record row ---------- */
  .band{border-top:1px solid var(--rule);padding:4.2rem 0;}
  .record{display:grid;grid-template-columns:9rem 1fr;gap:0 3rem;}
  .stamp{
    font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;
    text-transform:uppercase;color:var(--ink-soft);padding-top:.45rem;
  }
  h2{
    font-family:var(--serif);font-weight:400;font-size:1.9rem;
    letter-spacing:-.01em;line-height:1.2;margin:0 0 1.6rem;
  }
  .lede{max-width:62ch;color:var(--ink-mid);margin:0 0 2rem;}

  /* ---------- practice index ---------- */
  .index{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule);}
  .index li{border-bottom:1px solid var(--rule);}
  .index a{
    display:block;padding:1.5rem 1rem 1.5rem 0;text-decoration:none;
    position:relative;transition:padding-left .25s ease,background-color .25s ease;
  }
  .index a::before{
    content:"";position:absolute;left:0;top:0;bottom:0;width:2px;
    background:var(--accent);transform:scaleY(0);transform-origin:top;
    transition:transform .25s ease;
  }
  .index a:hover,.index a:focus-visible{padding-left:1.1rem;background:var(--paper-deep);}
  .index a:hover::before,.index a:focus-visible::before{transform:scaleY(1);}
  .index h3{
    font-family:var(--serif);font-weight:400;font-size:1.35rem;
    margin:0 0 .35rem;letter-spacing:-.005em;
  }
  .index p{margin:0;color:var(--ink-mid);font-size:.97rem;max-width:58ch;}

  /* ---------- rates: the two schedules side by side ----------
     legal on the left, general on the right. They stack below 900px, where
     two columns of figures would be narrower than the figures themselves. */
  .ratecols{display:grid;grid-template-columns:1fr 1fr;gap:0 4rem;align-items:start;}
  .ratecols .ratecol + .ratecol{border-left:1px solid var(--rule);padding-left:4rem;}
  .ratecol h2{margin-top:0;}
  .ratecol .rates{margin-bottom:1.6rem;}
  .ratenote{
    border-left:2px solid var(--accent);background:var(--accent-tint);
    padding:.75rem 1rem;margin:0 0 1.4rem;font-size:.92rem;line-height:1.55;
    color:var(--ink-mid);
  }
  @media (max-width:900px){
    .ratecols{grid-template-columns:1fr;gap:3rem 0;}
    .ratecols .ratecol + .ratecol{border-left:0;padding-left:0;border-top:1px solid var(--rule);padding-top:3rem;}
  }

  /* ---------- credentials ---------- */
  .facts{list-style:none;margin:0;padding:0;}
  .facts li{
    display:grid;grid-template-columns:5.5rem 1fr;gap:1.4rem;
    padding:.8rem 0;border-bottom:1px solid var(--rule);align-items:baseline;
  }
  .facts li:first-child{border-top:1px solid var(--rule);}
  .yr{font-family:var(--mono);font-size:.78rem;color:var(--accent);letter-spacing:.02em;}
  .facts strong{font-weight:600;}
  .facts em{font-style:normal;color:var(--ink-mid);display:block;font-size:.94rem;}

  /* ---------- verifiable credential rows ---------- */
  .verify{list-style:none;margin:0 0 1.6rem;padding:0;}
  .verify li{border-bottom:1px solid var(--rule);}
  .verify li:first-child{border-top:1px solid var(--rule);}
  .verify .row{
    display:grid;grid-template-columns:5.5rem 1fr 1.3rem;gap:1.4rem;
    align-items:baseline;padding:.85rem 0;text-decoration:none;color:inherit;
  }
  a.row{transition:background-color .2s ease,padding .2s ease;}
  a.row:hover,a.row:focus-visible{background:var(--paper-deep);padding-left:.7rem;padding-right:.7rem;}
  a.row:hover .arw{color:var(--accent);transform:translate(2px,-2px);}
  .verify strong{font-weight:600;display:block;}
  .verify em{font-style:normal;color:var(--ink-mid);display:block;font-size:.94rem;}
  .arw{
    font-family:var(--mono);font-size:.8rem;color:var(--ink-soft);
    transition:transform .2s ease,color .2s ease;justify-self:end;
  }
  .srcnote{
    font-family:var(--mono);font-size:.66rem;letter-spacing:.09em;
    text-transform:uppercase;color:var(--ink-soft);margin:0 0 2.4rem;
  }
  h3.sub{
    font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;
    text-transform:uppercase;color:var(--ink);font-weight:500;
    margin:2.8rem 0 1.1rem;
  }
  .assoc{margin:0;padding:0;list-style:none;columns:2;column-gap:2.5rem;}
  .assoc li{
    break-inside:avoid;padding:.4rem 0;font-size:.96rem;
    color:var(--ink-mid);border-bottom:1px solid var(--rule);
  }
  @media (max-width:720px){
    .verify .row{grid-template-columns:1fr 1.3rem;gap:.15rem 1rem;}
    .verify .yr{grid-column:1/-1;}
    .assoc{columns:1;}
  }

  /* ---------- references ---------- */
  .refs{list-style:none;margin:0 0 2rem;padding:0;font-family:var(--serif);}
  .refs li{
    padding-left:2.2rem;text-indent:-2.2rem;
    margin-bottom:1.05rem;line-height:1.55;font-size:1.02rem;
  }
  .refs em{font-style:italic;}
  .more{
    display:inline-block;font-family:var(--mono);font-size:.74rem;
    letter-spacing:.1em;text-transform:uppercase;color:var(--accent);
    text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:2px;
    margin-right:1.8rem;
  }
  .more:hover{background:var(--accent-tint);}
  .note{
    margin-top:2.2rem;padding-top:1.4rem;border-top:1px solid var(--rule);
    font-size:.9rem;color:var(--ink-soft);max-width:60ch;
  }

  /* ---------- footer ---------- */
  footer{border-top:1px solid var(--rule);padding:2.2rem 0 3.5rem;}
  footer .wrap{
    display:flex;flex-wrap:wrap;gap:.8rem 2rem;justify-content:space-between;
    font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;
    text-transform:uppercase;color:var(--ink-soft);
  }

  @media (max-width:720px){
    :root{--gut:1.4rem;}
    .front{padding:3.4rem 0 3rem;}
    .band{padding:3rem 0;}
    .record{grid-template-columns:1fr;gap:.9rem;}
    .stamp{padding-top:0;}
    .facts li{grid-template-columns:1fr;gap:.15rem;}
  }
  @media (prefers-reduced-motion:reduce){
    *{animation:none!important;transition:none!important;}
    .rise{opacity:1;transform:none;}
  }

  /* ---------- homepage additions ---------- */
  a.inline{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);}
  a.inline:hover{background:var(--accent-tint);}
  .nav a.on{color:var(--accent);border-bottom-color:var(--accent);}
  .index .arw2{
    font-family:var(--mono);font-size:.8rem;color:var(--ink-soft);
    transition:transform .2s ease,color .2s ease;
  }
  .index a:hover .arw2{color:var(--accent);transform:translate(2px,-2px);}
  .cta{
    display:flex;flex-wrap:wrap;gap:1rem 1.6rem;align-items:center;
    margin-top:1.8rem;
  }
  .btn{
    font-family:var(--mono);font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;
    color:var(--paper);background:var(--ink);border:1px solid var(--ink);
    padding:.8rem 1.5rem;text-decoration:none;
    transition:background-color .2s ease,border-color .2s ease;
  }
  .btn:hover{background:var(--accent);border-color:var(--accent);}
  .btn.ghost{background:transparent;color:var(--ink);border-color:var(--rule);}
  .btn.ghost:hover{color:var(--accent);border-color:var(--accent);background:transparent;}
  @media (max-width:720px){ }

/* ---------- legal page additions ---------- */
  .eyebrow{
    font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;
    text-transform:uppercase;color:var(--accent);margin:0 0 1.4rem;
  }
  .domains{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule);}
  .domains li{
    padding:1.15rem 0;border-bottom:1px solid var(--rule);
    display:grid;grid-template-columns:15rem 1fr;gap:0 2.5rem;align-items:baseline;
  }
  .domains strong{
    font-family:var(--serif);font-weight:400;font-size:1.12rem;
    letter-spacing:-.005em;line-height:1.3;
  }
  .domains em{font-style:normal;color:var(--ink-mid);font-size:.96rem;}
  .idx-static{display:block;padding:1.5rem 0;}
  .idx-static h3{
    font-family:var(--serif);font-weight:400;font-size:1.28rem;
    margin:0 0 .35rem;letter-spacing:-.005em;
  }
  .idx-static p{margin:0;color:var(--ink-mid);font-size:.97rem;max-width:60ch;}
  .lede.small{font-size:.95rem;max-width:66ch;}
  .cap{font-style:italic;}
  .abstract strong{font-weight:600;}
  a.inline{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);}
  a.inline:hover{background:var(--accent-tint);}
  .warn{
    border-left:2px solid var(--accent);background:var(--accent-tint);
    padding:1rem 1.2rem;margin:0 0 2.2rem;max-width:62ch;
    font-size:.95rem;line-height:1.6;
  }
  .warn strong{font-weight:600;}

  /* role chip — the capacity in which each matter was performed */
  .role{
    display:inline-block;font-family:var(--mono);font-size:.6rem;
    letter-spacing:.13em;text-transform:uppercase;color:var(--accent);
    border:1px solid var(--rule);background:var(--paper);
    padding:.22rem .5rem;margin:0 0 .55rem;line-height:1.4;
  }
  .verify .row > span > strong{margin-bottom:.15rem;}
  #experience .verify{margin-bottom:.4rem;}
  #experience h3.sub{margin-top:2.6rem;}
  #experience h3.sub:first-of-type{margin-top:1.4rem;}

  @media (max-width:720px){
    .domains li{grid-template-columns:1fr;gap:.3rem;}
  }

/* ---------- shared page additions ---------- */

  .eyebrow{
    font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;
    text-transform:uppercase;color:var(--accent);margin:0 0 1.4rem;
  }
  .domains{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule);}
  .domains li{
    padding:1.15rem 0;border-bottom:1px solid var(--rule);
    display:grid;grid-template-columns:15rem 1fr;gap:0 2.5rem;align-items:baseline;
  }
  .domains strong{
    font-family:var(--serif);font-weight:400;font-size:1.12rem;
    letter-spacing:-.005em;line-height:1.3;
  }
  .domains em{font-style:normal;color:var(--ink-mid);font-size:.96rem;}
  .idx-static{display:block;padding:1.5rem 0;}
  .idx-static h3{
    font-family:var(--serif);font-weight:400;font-size:1.28rem;
    margin:0 0 .35rem;letter-spacing:-.005em;
  }
  .idx-static p{margin:0;color:var(--ink-mid);font-size:.97rem;max-width:60ch;}
  .lede.small{font-size:.95rem;max-width:66ch;}
  .cap{font-style:italic;}
  .abstract strong{font-weight:600;}
  a.inline{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);}
  a.inline:hover{background:var(--accent-tint);}
  .warn{
    border-left:2px solid var(--accent);background:var(--accent-tint);
    padding:1rem 1.2rem;margin:0 0 2.2rem;max-width:62ch;
    font-size:.95rem;line-height:1.6;
  }
  .warn strong{font-weight:600;}

  /* role chip — the capacity in which each matter was performed */
  .role{
    display:inline-block;font-family:var(--mono);font-size:.6rem;
    letter-spacing:.13em;text-transform:uppercase;color:var(--accent);
    border:1px solid var(--rule);background:var(--paper);
    padding:.22rem .5rem;margin:0 0 .55rem;line-height:1.4;
  }
  .verify .row > span > strong{margin-bottom:.15rem;}
  #experience .verify{margin-bottom:.4rem;}
  #experience h3.sub{margin-top:2.6rem;}
  #experience h3.sub:first-of-type{margin-top:1.4rem;}

  @media (max-width:720px){
    .domains li{grid-template-columns:1fr;gap:.3rem;}
  }

/* ---------- research page ---------- */
  .eyebrow{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 1.4rem;}
  a.inline{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);}
  a.inline:hover{background:var(--accent-tint);}
  .domains{list-style:none;margin:0 0 1rem;padding:0;border-top:1px solid var(--rule);}
  .domains li{padding:1.05rem 0;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:14rem 1fr;gap:0 2.4rem;align-items:baseline;}
  .domains strong{font-family:var(--serif);font-weight:400;font-size:1.1rem;line-height:1.3;}
  .domains em{font-style:normal;color:var(--ink-mid);font-size:.95rem;}
  .lede.small{font-size:.95rem;max-width:66ch;}
  .verify{list-style:none;margin:0 0 1.4rem;padding:0;}
  .verify li{border-bottom:1px solid var(--rule);}
  .verify li:first-child{border-top:1px solid var(--rule);}
  .verify .row{display:grid;grid-template-columns:5.5rem 1fr;gap:1.4rem;align-items:baseline;padding:.9rem 0;}
  .verify strong{font-weight:600;display:block;}
  .verify em{font-style:normal;color:var(--ink-mid);display:block;font-size:.94rem;}
  .note-box{border-left:2px solid var(--rule);padding-left:1.1rem;margin:0 0 1.6rem;font-size:.93rem;color:var(--ink-mid);max-width:60ch;}
  .cta{display:flex;flex-wrap:wrap;gap:1rem 1.4rem;align-items:center;margin-top:1.6rem;}
  .btn{font-family:var(--mono);font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--paper);background:var(--ink);border:1px solid var(--ink);padding:.8rem 1.5rem;text-decoration:none;}
  .btn:hover{background:var(--accent);border-color:var(--accent);}
  .btn.ghost{background:transparent;color:var(--ink);border-color:var(--rule);}
  .btn.ghost:hover{color:var(--accent);border-color:var(--accent);}
  @media (max-width:720px){.domains li{grid-template-columns:1fr;gap:.3rem;} .verify .row{grid-template-columns:1fr;gap:.15rem;}}

/* ---------- rate schedule page ---------- */
  .eyebrow{
    font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;
    text-transform:uppercase;color:var(--accent);margin:0 0 1.4rem;
  }
  .statement{
    font-family:var(--serif);font-size:clamp(1.05rem,2.2vw,1.22rem);
    line-height:1.55;max-width:52ch;margin:2.2rem 0 0;
    padding:1.15rem 0 0;border-top:2px solid var(--accent);
  }
  .lede.small{font-size:.95rem;max-width:64ch;}

  .rates{list-style:none;margin:0 0 1.8rem;padding:0;border-top:1px solid var(--rule);}
  .rates li{
    display:grid;grid-template-columns:1fr auto;gap:.4rem 2.5rem;
    padding:1.05rem 0;border-bottom:1px solid var(--rule);align-items:baseline;
  }
  .rates strong{font-weight:600;display:block;font-size:1rem;}
  .rates em{
    font-style:normal;display:block;color:var(--ink-soft);
    font-size:.89rem;margin-top:.15rem;max-width:46ch;
  }
  .fig{
    font-family:var(--mono);font-size:1.02rem;color:var(--accent);
    text-align:right;white-space:nowrap;font-weight:500;
  }
  .fig i{
    font-style:normal;display:block;font-size:.68rem;
    letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);
    margin-top:.2rem;font-weight:400;
  }

  .defs{margin:0 0 1.6rem;padding:0;max-width:64ch;}
  .defs dt{
    font-family:var(--mono);font-size:.68rem;letter-spacing:.11em;
    text-transform:uppercase;color:var(--ink);margin:1.2rem 0 .3rem;font-weight:500;
  }
  .defs dt:first-child{margin-top:0;}
  .defs dd{margin:0;color:var(--ink-mid);font-size:.95rem;line-height:1.6;}
  .defs.wide dd{padding-bottom:1rem;border-bottom:1px solid var(--rule);}
  .defs.wide dd:last-child{border-bottom:none;}

  .rationale{
    font-size:.93rem;color:var(--ink-mid);max-width:58ch;
    border-left:2px solid var(--rule);padding-left:1.1rem;margin:0 0 1.4rem;
  }
  .terms-list{margin:0 0 1.6rem;padding:0;list-style:none;max-width:60ch;}
  .terms-list li{
    padding:.5rem 0 .5rem 1.1rem;border-bottom:1px solid var(--rule);
    font-size:.94rem;color:var(--ink-mid);position:relative;
  }
  .terms-list.plain{border-top:1px solid var(--rule);}
  .terms-list li::before{
    content:"";position:absolute;left:0;top:1.15em;
    width:4px;height:1px;background:var(--accent);
  }
  .more{margin-top:.6rem;}

  @media (max-width:720px){
    .rates li{grid-template-columns:1fr;gap:.35rem;}
    .fig{text-align:left;}
    .fig i{display:inline;margin-left:.4rem;}
  }
  @media (max-width:720px){
  }
  @media (max-width:760px){
  }

/* ---------- engagement page ---------- */
  .eyebrow{
    font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;
    text-transform:uppercase;color:var(--accent);margin:0 0 1.4rem;
  }
  a.inline{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);}
  a.inline:hover{background:var(--accent-tint);}
  .warn{
    border-left:2px solid var(--accent);background:var(--accent-tint);
    padding:1rem 1.2rem;margin:0 0 2.2rem;max-width:62ch;
    font-size:.95rem;line-height:1.6;
  }
  .warn strong{font-weight:600;}

  /* numbered sequence with connecting rule */
  .steps{list-style:none;margin:0;padding:0;counter-reset:none;}
  .steps > li{
    display:grid;grid-template-columns:4.5rem 1fr;gap:0 2.2rem;
    padding:0 0 3.2rem;position:relative;
  }
  .steps > li::before{
    content:"";position:absolute;left:1.05rem;top:2.1rem;bottom:0;
    width:1px;background:var(--rule);
  }
  .steps > li:last-child{padding-bottom:0;}
  .steps > li:last-child::before{display:none;}
  .num{
    font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;
    color:var(--accent);background:var(--paper);
    border:1px solid var(--rule);width:2.15rem;height:2.15rem;
    display:flex;align-items:center;justify-content:center;
    position:relative;z-index:1;
  }
  .steps h3{
    font-family:var(--serif);font-weight:400;font-size:1.42rem;
    margin:.15rem 0 .7rem;letter-spacing:-.008em;line-height:1.25;
  }
  .steps p{margin:0 0 .9rem;max-width:60ch;color:var(--ink-mid);}
  .steps p strong{color:var(--ink);font-weight:600;}
  .postscript{font-size:.93rem;}

  /* consultation fee pairs */
  .fees{margin:1.4rem 0 1.2rem;padding:0;border-top:1px solid var(--rule);max-width:52ch;}
  .fees > div{
    display:grid;grid-template-columns:1fr auto;gap:.3rem 1.6rem;
    padding:.9rem 0;border-bottom:1px solid var(--rule);align-items:baseline;
  }
  .fees dt{font-weight:600;font-size:.95rem;}
  .fees dd{
    margin:0;font-family:var(--mono);font-size:.85rem;color:var(--accent);
    text-align:right;white-space:nowrap;
  }
  .fine{
    display:block;grid-column:1/-1;font-family:var(--sans);
    font-size:.85rem;color:var(--ink-soft);text-align:left;
    white-space:normal;margin-top:.15rem;
  }
  .terms-list{margin:0 0 1rem;padding:0;list-style:none;max-width:54ch;}
  .terms-list li{
    padding:.42rem 0 .42rem 1.1rem;border-bottom:1px solid var(--rule);
    font-size:.94rem;color:var(--ink-mid);position:relative;
  }
  .terms-list li::before{
    content:"";position:absolute;left:0;top:1.05em;
    width:4px;height:1px;background:var(--accent);
  }

  @media (max-width:720px){
    .steps > li{grid-template-columns:2.6rem 1fr;gap:0 1.1rem;}
    .steps > li::before{left:1.05rem;}
    .fees > div{grid-template-columns:1fr;}
    .fees dd{text-align:left;}
  }

  
/* ---------- inquiry form ---------- */
  #inquiry{max-width:44rem;}
  .fgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 2rem;}
  .field{margin:0 0 1.3rem;}
  .field.wide{max-width:100%;}
  .field label{
    display:block;font-family:var(--mono);font-size:.66rem;letter-spacing:.11em;
    text-transform:uppercase;color:var(--ink-mid);margin-bottom:.4rem;font-weight:500;
  }
  .field label b{color:var(--accent);font-weight:500;}
  .hint{
    font-family:var(--sans);text-transform:none;letter-spacing:0;
    font-size:.8rem;color:var(--ink-soft);margin-left:.5rem;
  }
  .field input,.field select,.field textarea{
    width:100%;font-family:var(--sans);font-size:.97rem;color:var(--ink);
    background:var(--paper);border:1px solid var(--rule);border-radius:0;
    padding:.6rem .7rem;transition:border-color .18s ease,background-color .18s ease;
  }
  .field textarea{resize:vertical;line-height:1.6;}
  .field input:focus,.field select:focus,.field textarea:focus{
    outline:none;border-color:var(--accent);background:#fff;
    box-shadow:inset 0 -2px 0 var(--accent);
  }
  .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
  .cf-turnstile{margin:.4rem 0 1.4rem;}
  .frow{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.4rem;}
  #inquiry button{
    font-family:var(--mono);font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;
    color:var(--paper);background:var(--ink);border:1px solid var(--ink);
    padding:.8rem 1.6rem;cursor:pointer;transition:background-color .2s ease,border-color .2s ease;
  }
  #inquiry button:hover:not(:disabled){background:var(--accent);border-color:var(--accent);}
  #inquiry button:disabled{opacity:.5;cursor:default;}
  #f-status{font-size:.9rem;}
  #f-status.bad{color:var(--accent);}
  .fnote{font-size:.82rem;color:var(--ink-soft);margin:1.4rem 0 0;max-width:48ch;}
  .sent{
    font-family:var(--serif);font-size:1.1rem;line-height:1.6;
    border-left:2px solid var(--accent);padding:.6rem 0 .6rem 1.2rem;margin:0;max-width:52ch;
  }
  @media (max-width:640px){ .fgrid{grid-template-columns:1fr;} }

/* ---------- gated document page ---------- */
  .eyebrow{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 1.4rem;}
  .gate{max-width:38rem;}
  .step{display:grid;grid-template-columns:2.4rem 1fr;gap:0 1.4rem;padding:0 0 1.6rem;position:relative;}
  .step::before{content:"";position:absolute;left:.95rem;top:1.9rem;bottom:0;width:1px;background:var(--rule);}
  .step:last-of-type{padding-bottom:0;}
  .step:last-of-type::before{display:none;}
  .stepn{font-family:var(--mono);font-size:.7rem;color:var(--accent);background:var(--paper);border:1px solid var(--rule);width:1.95rem;height:1.95rem;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;}
  .step h3{font-family:var(--serif);font-weight:400;font-size:1.15rem;margin:.2rem 0 .3rem;}
  .step p{margin:0;color:var(--ink-mid);font-size:.94rem;max-width:52ch;}
  .fgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 1.6rem;}
  .field{margin:0 0 1.2rem;}
  .field label{display:block;font-family:var(--mono);font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-mid);margin-bottom:.4rem;font-weight:500;}
  .field label b{color:var(--accent);font-weight:500;}
  .field input,.field textarea{width:100%;font-family:var(--sans);font-size:.97rem;color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:0;padding:.6rem .7rem;}
  .field textarea{resize:vertical;line-height:1.6;}
  .field input:focus,.field textarea:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:inset 0 -2px 0 var(--accent);}
  .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
  .cf-turnstile{margin:.4rem 0 1.2rem;}
  .btnrow{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.3rem;}
  button.act{font-family:var(--mono);font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--paper);background:var(--ink);border:1px solid var(--ink);padding:.8rem 1.5rem;cursor:pointer;}
  button.act:hover:not(:disabled){background:var(--accent);border-color:var(--accent);}
  button.act:disabled{opacity:.5;cursor:default;}
  .msg{font-size:.9rem;}
  .msg.bad{color:var(--accent);}
  /* nine characters, upper case, from an unambiguous alphabet */
  .code-in{font-family:var(--mono)!important;font-size:1.35rem!important;letter-spacing:.28em;text-align:center;max-width:16rem;text-transform:uppercase;}
  .done{font-family:var(--serif);font-size:1.12rem;line-height:1.6;border-left:2px solid var(--accent);padding:.6rem 0 .6rem 1.2rem;margin:0 0 1.4rem;max-width:50ch;}
  @media (max-width:640px){.fgrid{grid-template-columns:1fr;}}

  /* ---------- about essay ---------- */
  .essay{max-width:38rem;}
  .essay p{font-size:1.05rem;line-height:1.72;margin:0 0 1.25rem;}
  .essay p:first-child{font-size:1.16rem;}
  .essay p:last-child{margin-bottom:0;}
  footer a{color:inherit;text-decoration:none;border-bottom:1px solid var(--rule);}
  footer a:hover{color:var(--accent);border-bottom-color:var(--accent);}

  /* ---------- publications ---------- */
  .pubs{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule);}
  .pubs li{
    display:grid;grid-template-columns:4rem 1fr;gap:0 1.6rem;
    padding:.95rem 0;border-bottom:1px solid var(--rule);
    font-family:var(--serif);font-size:1rem;line-height:1.55;align-items:baseline;
  }
  .pubs .yr{font-family:var(--mono);font-size:.76rem;color:var(--accent);}
  .pubs em{font-style:italic;color:var(--ink-mid);}
  /* Says what the link gives you before you click it: a free copy, or the
     publisher's page, which may be behind a paywall. */
  .publink{
    display:inline-block;margin-left:.5rem;white-space:nowrap;
    font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;
    text-transform:uppercase;text-decoration:none;
    color:var(--ink-soft);border:1px solid var(--rule);
    padding:.12rem .42rem;vertical-align:.08em;
    transition:color .18s ease,border-color .18s ease;
  }
  .publink:hover,.publink:focus-visible{color:var(--accent);border-color:var(--accent);}
  .publink.free{color:var(--accent-2);border-color:var(--accent-2);}
  .publink.free:hover,.publink.free:focus-visible{background:var(--accent-2-tint);}

  @media (max-width:720px){.pubs li{grid-template-columns:1fr;gap:.25rem;}}

  /* ---------- practice columns ---------- */
  .index.cols{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--rule);border-bottom:none;}
  .index.cols li{border-bottom:none;border-right:1px solid var(--rule);}
  .index.cols li:last-child{border-right:none;}
  .index.cols a{padding:1.5rem 1.2rem 1.6rem;height:100%;}
  .index.cols a::before{top:0;bottom:auto;left:0;right:0;width:auto;height:2px;transform:scaleX(0);transform-origin:left;}
  .index.cols a:hover,.index.cols a:focus-visible{padding-left:1.2rem;}
  .index.cols a:hover::before,.index.cols a:focus-visible::before{transform:scaleX(1);}
  .index.cols h3{font-size:1.14rem;line-height:1.25;}
  .index.cols p{font-size:.89rem;}
  .index.cols .arw2{display:none;}
  @media (max-width:900px){
    .index.cols{grid-template-columns:repeat(2,1fr);}
    .index.cols li{border-bottom:1px solid var(--rule);}
    .index.cols li:nth-child(2n){border-right:none;}
  }
  @media (max-width:560px){
    .index.cols{grid-template-columns:1fr;}
    .index.cols li{border-right:none;}
  }

  /* ---------- inline aside note ---------- */
  .aside{
    font-family:var(--serif);font-style:italic;font-size:.94rem;line-height:1.65;
    color:var(--ink-soft);max-width:none;margin:0 0 1.8rem;
    border-left:1px solid var(--rule);padding-left:1.1rem;
  }

  /* ---------- step checklist ---------- */
  .checks{list-style:none;margin:0 0 .9rem;padding:0;max-width:52ch;}
  .checks li{
    position:relative;padding:.36rem 0 .36rem 1.5rem;
    color:var(--ink-mid);font-size:.95rem;
  }
  .checks li::before{
    content:"";position:absolute;left:0;top:.95em;
    width:8px;height:1px;background:var(--accent);
  }

  /* ================= wide layout, rhythm and motion ================= */

  /* alternating section shade gives the page a pulse */
  .band:nth-of-type(even){background:var(--shade);}
  .band{border-top:1px solid var(--rule);}

  /* the stamp column earns more room on wide screens and turns sticky */
  @media (min-width:1100px){
    .record{grid-template-columns:13rem 1fr;gap:0 5rem;}
    .stamp{position:sticky;top:2.2rem;font-size:.74rem;}
    .stamp::after{content:"";display:block;width:2rem;height:1px;background:var(--accent-2);margin-top:.7rem;}
  }
  @media (min-width:1500px){ .record{grid-template-columns:16rem 1fr;gap:0 7rem;} }

  /* display type scales with the viewport */
  .front h1{font-size:clamp(2.7rem,6.4vw,6.2rem);}
  h2{font-size:clamp(1.75rem,2.4vw,2.35rem);}
  .standfirst{font-size:clamp(1.15rem,1.9vw,1.6rem);max-width:34ch;}
  .front{padding:clamp(3.4rem,8vw,7rem) 0 clamp(3rem,5vw,4.5rem);}
  .band{padding:clamp(3rem,5.5vw,5rem) 0;}

  /* front matter sits wider and the portrait grows */
  @media (min-width:1100px){
    .front-grid{grid-template-columns:minmax(0,1fr) 19rem;gap:0 5rem;}
    .abstract{font-size:1.12rem;}
  }

  /* the secondary accent, used only for structural marks */
  .eyebrow{color:var(--accent-2);}
  .keywords{border-color:var(--rule);}
  .keywords span{position:relative;padding-left:.85rem;}
  .keywords span::before{content:"";position:absolute;left:0;top:.52em;width:4px;height:4px;background:var(--accent-2);}
  h3.sub{color:var(--accent-2);}
  h3.sub::before{content:"";display:inline-block;width:1.3rem;height:1px;background:var(--accent-2);vertical-align:middle;margin-right:.6rem;}

  /* publications and facts use the width */
  @media (min-width:1200px){
    .pubs{columns:2;column-gap:3.5rem;}
    .pubs li{break-inside:avoid;display:block;}
    .pubs .yr{display:inline-block;margin-right:.7rem;}
    .facts li{grid-template-columns:7rem 1fr;}
    .domains li{grid-template-columns:19rem 1fr;gap:0 3.2rem;}
    .essay{max-width:44rem;}
    .essay p{font-size:1.12rem;}
  }

  /* practice cards get presence */
  .index.cols a{transition:background-color .3s ease,transform .3s ease;}
  .index.cols a:hover{background:var(--paper);transform:translateY(-3px);}
  .index.cols a::before{height:3px;}

  /* rate rows respond on hover so the table feels alive */
  .rates li,.verify li,.pubs li{transition:background-color .2s ease;}
  .rates li:hover,.pubs li:hover{background:var(--accent-2-tint);}

  /* scroll reveal */
  .reveal{opacity:0;transform:translateY(14px);}
  .reveal.in{opacity:1;transform:none;transition:opacity .65s cubic-bezier(.2,.7,.3,1),transform .65s cubic-bezier(.2,.7,.3,1);}
  .reveal.in.d1{transition-delay:.06s}

  /* a hairline rule that draws itself under each section heading */
  .band h2{position:relative;padding-bottom:.7rem;}
  .band h2::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--accent);transition:width .8s cubic-bezier(.2,.7,.3,1) .15s;}
  .reveal.in h2::after,.band h2.drawn::after{width:3.5rem;}

  @media (prefers-reduced-motion:reduce){
    .reveal,.reveal.in{opacity:1;transform:none;transition:none;}
    .band h2::after{width:3.5rem;transition:none;}
    .index.cols a:hover{transform:none;}
  }

  /* ---------- one-line name ---------- */
  h1.nowrap{white-space:nowrap;font-size:min(7.6vw,7rem);line-height:1.05;}
  /* sized from the text column, not the viewport, so a long name can never
     push the portrait out of the grid. browsers without container-query units
     fall back to the vw rule above. */
  h1.nowrap{font-size:min(10cqw,7rem);}

  /* ---------- footer note ---------- */
  footer .frow-main{display:flex;flex-wrap:wrap;gap:.8rem 2rem;justify-content:space-between;}
  .fnote-legal{
    font-family:var(--serif);font-style:italic;font-size:.82rem;line-height:1.6;
    color:var(--ink-soft);max-width:78ch;margin:1.1rem 0 0;
    padding-top:1rem;border-top:1px solid var(--rule);text-transform:none;letter-spacing:0;
  }

  /* ---------- site search ---------- */
  .srch-open{
    font-family:var(--mono);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;
    color:var(--ink-mid);background:transparent;border:none;border-bottom:1px solid transparent;
    padding:0 0 2px;cursor:pointer;
  }
  .srch-open::before{content:"\2315\00a0";}
  .srch-open:hover{color:var(--accent);border-bottom-color:var(--accent);}
  .srch{position:fixed;inset:0;z-index:300;background:rgba(20,24,29,.5);display:none;padding:6vh 1.2rem 2rem;}
  .srch.on{display:block;}
  .srch-card{
    background:var(--paper);max-width:44rem;margin:0 auto;max-height:82vh;
    display:flex;flex-direction:column;border:1px solid var(--rule);
  }
  #srch-q{
    font-family:var(--serif);font-size:1.35rem;padding:1.1rem 1.3rem;border:none;
    border-bottom:1px solid var(--rule);background:transparent;color:var(--ink);width:100%;
  }
  #srch-q:focus{outline:none;box-shadow:inset 0 -2px 0 var(--accent);}
  .srch-note{
    font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;
    color:var(--ink-soft);margin:0;padding:.7rem 1.3rem;border-bottom:1px solid var(--rule);
  }
  .srch-res{overflow:auto;}
  .srch-hit{display:block;padding:.85rem 1.3rem;border-bottom:1px solid var(--rule);text-decoration:none;color:inherit;}
  .srch-hit:hover{background:var(--accent-2-tint);}
  .srch-loc{
    display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.11em;
    text-transform:uppercase;color:var(--accent-2);margin-bottom:.25rem;
  }
  .srch-txt{display:block;font-size:.93rem;line-height:1.55;color:var(--ink-mid);}
  .srch-txt b{color:var(--ink);background:var(--accent-tint);font-weight:600;}

  /* ---------- last updated ---------- */
  .updated{
    font-family:var(--mono);font-size:.66rem;letter-spacing:.09em;
    text-transform:uppercase;color:var(--ink-soft);
    margin:1rem 0 0;text-align:left;
  }
  .updated time{color:var(--ink-mid);}

  /* ---------- print ----------
     The rates schedule, the CV and the legal pages are the ones people put on
     paper, often to read alongside something else.

     The first rule is the important one. .rise and .reveal both start at
     opacity 0, and .reveal only becomes visible when site.js sees it scroll
     into view, so anything below the fold would otherwise print blank. */
  @media print{
    .rise,.reveal,.reveal.in{
      opacity:1!important;transform:none!important;
      animation:none!important;transition:none!important;
    }

    :root{
      --paper:#fff;--paper-deep:#fff;--shade:#fff;--accent-tint:#fff;
      --accent-2-tint:#fff;--ink:#000;--ink-mid:#1a1a1a;--ink-soft:#3a3a3a;
      --rule:#999;
    }
    body{background:#fff;color:#000;font-size:10.5pt;line-height:1.45;}
    .wrap{max-width:100%;padding:0;}

    /* Navigation, search and the forms cannot be used on paper. */
    .masthead .nav,.subnav,.skip,.srch,.srch-open,
    form,.cf-turnstile,.btnrow,.frow,#f-status,
    .arw,.arw2,.plate,.more{display:none!important;}

    .masthead{border-bottom:1px solid #000;}
    .masthead .wrap{padding:0 0 .5rem;}

    a{color:#000;text-decoration:none;}
    /* An external destination is worth carrying onto paper; an internal one is
       just a filename, and a bare fragment is noise. */
    main a[href^="http"]::after{
      content:" (" attr(href) ")";font-size:8.5pt;color:#444;word-break:break-all;
    }

    h1,h2,h3{page-break-after:avoid;}
    .rates li,.facts li,.defs dt,.defs dd,.index li,.step,.pubs li,.domains li{
      page-break-inside:avoid;
    }
    .band{padding:1.2rem 0;border-top:1px solid #999;}
    .front{padding:0 0 1rem;}
    .index a:hover,.rates li:hover,.pubs li:hover{background:none;}

    /* Two columns survive on a portrait page at this size. */
    .ratecols{grid-template-columns:1fr 1fr;gap:0 1.6rem;}
    .ratecols .ratecol + .ratecol{padding-left:1.6rem;}
  }
