/* Generated by build.mjs from site/css/ (see bundles.json): edit those files, then run "node build.mjs". */
/* ===== css/shared/fonts.css ===== */

/* Montserrat, self-hosted: the Latin subset of the variable font, upright and italic. */
@font-face{
  font-family:"Montserrat";font-style:normal;font-weight:100 900;font-display:swap;
  src:url("/assets/fonts/montserrat-latin.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;
}
@font-face{
  font-family:"Montserrat";font-style:italic;font-weight:100 900;font-display:swap;
  src:url("/assets/fonts/montserrat-latin-italic.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;
}

/* ===== css/shared/tokens.css ===== */

/* The design tokens shared by every page: colours, type, measures and easing. */
:root{
  --ink:#16203A;
  --blue:#1F4DB5;
  --blue-deep:#183A8C;
  --mist:#E7ECF3;           /* page background: a cool blue-grey, never white */
  --mist-2:#DCE3ED;
  --white:#FFFFFF;
  --muted:#535B6E;
  --line:rgba(22,32,58,.16);
  --on-ink:#3B5596;         /* quieter text on the white glass */
  --light-blue:#9DB3EA;
  --line-ink:rgba(31,77,181,.2);
  --line-blue:rgba(31,77,181,.45);   /* the outline of icon boxes and the search field */
  --btn-line:rgba(31,77,181,.62);    /* the outline of the light and dark buttons */
  --pane-navy:rgba(255,255,255,.7);  /* the frosted white panels over the photographs */
  --pane-blue:rgba(234,241,252,.74); /* the same with a breath of blue */
  --glass-blur:blur(14px) saturate(1.1);
  --field:#767C8E;          /* form field borders and placeholders */
  --field-bg:#F7F9FC;       /* form fields and the search screen */
  --alert:#9B2C2C;

  --sans:"Montserrat",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --display:var(--sans);
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;   /* code in articles */

  --maxw:1320px;
  --gutter:clamp(1rem,4vw,3.5rem);
  --gap:clamp(1rem,2vw,2rem);
  --head-h:76px;
  --head-h-small:64px;
  --edge:max(var(--gutter), calc((100vw - var(--maxw)) / 2));
  --inner:clamp(2.5rem,5vw,5.5rem);
  --ease:cubic-bezier(.2,.7,.2,1);
  --turn-ease:cubic-bezier(.65,0,.35,1);
}
@media(max-width:1023px){:root{--head-h:64px;}}
@media(max-width:639px){:root{--head-h:60px;--head-h-small:56px;}}

/* ===== css/site/base.css ===== */

/* Page defaults for the six public pages: resets, type, links, focus, and small helpers. */
/* The furniture (header, menu, buttons, logos) is not text to be selected or saved:
   each of those files turns off selection where it styles them. */
*,*::before,*::after{box-sizing:border-box;}
html{
  -webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:var(--head-h-small);
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
html.is-gliding{scroll-behavior:auto;}
body{
  margin:0;background:var(--mist);color:var(--ink);
  font-family:var(--sans);font-size:1rem;line-height:1.7;
  font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;overflow-x:clip;
}
h1,h2,h3,h4{margin:0;font-family:var(--display);font-weight:400;line-height:1.15;letter-spacing:-.01em;text-wrap:balance;}
p,ul,ol,dl,dd,figure,address{margin:0;}
ul[role="list"],ol[role="list"]{list-style:none;padding:0;}
address{font-style:normal;}
a{color:inherit;}
img,svg{display:block;max-width:100%;}
img{height:auto;-webkit-user-drag:none;}
button,input,select,textarea{font:inherit;color:inherit;}
[hidden]{display:none!important;}
::selection{background:var(--light-blue);color:var(--ink);}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;}
[tabindex="-1"]:focus{outline:none;}
/* A tap is not a keyboard: no focus ring after one (site.js marks which was used last). */
html[data-input="touch"] :focus-visible,html[data-input="mouse"] :focus-visible{outline:none;}
.nobr{white-space:nowrap;}
.sr-only{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;}
.skip{position:fixed;left:var(--gutter);top:-100px;z-index:400;padding:.75rem 1.25rem;background:var(--white);color:var(--ink);font-size:.8125rem;text-decoration:none;}
.skip:focus{top:.75rem;}
.wrap{width:100%;max-width:calc(var(--maxw) + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter);}

/* ===== css/site/controls.css ===== */

/* Labels, outline buttons, icon buttons (Search, Menu, Close) and icon links, used on every page. */
.label,.section-no,.panel-kicker{font-size:.75rem;font-weight:500;line-height:1.4;letter-spacing:.14em;text-transform:uppercase;}
.label{color:var(--muted);}
.section-no{color:var(--blue);}

/* A button is a label and an icon cell, split by a hairline, on a clear
   ground: the outline carries it. Hover states only where there is a real
   pointer, so a tapped button never stays lit on a phone. */
.btn{
  display:inline-flex;align-items:stretch;min-height:50px;padding:0;
  background:transparent;color:inherit;border:1px solid currentColor;border-radius:0;
  font-size:.75rem;font-weight:600;line-height:1.2;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;
  cursor:pointer;transition:background-color .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
.btn-label{display:flex;align-items:center;flex:1;padding:.8rem 1.15rem .8rem 1.35rem;}
.btn-icon{display:grid;place-items:center;flex:none;width:50px;border-left:1px solid currentColor;transition:background-color .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease);}
.btn-icon svg{width:16px;height:16px;transition:transform .25s var(--ease);}
.btn[aria-expanded="true"] .btn-icon svg{transform:rotate(45deg);}
.btn[disabled]{opacity:.65;cursor:progress;}
.btn--small{min-height:40px;}
.btn--small .btn-icon{width:40px;}
/* blue outlines: --light on the white glass (with a veil of white), --dark on the pale page */
.btn--light,.btn--dark{color:var(--blue);border-color:var(--btn-line);}
.btn--light{background:rgba(255,255,255,.3);}
.btn--light .btn-icon,.btn--dark .btn-icon{border-left-color:var(--btn-line);}
.btn--light:active,.btn--dark:active{background:rgba(31,77,181,.1);}
@media(hover:hover){
  .btn:hover .btn-icon svg{transform:translateX(3px);}
  .btn[aria-expanded="true"]:hover .btn-icon svg{transform:rotate(45deg);}
  .btn--light:hover,.btn--dark:hover{background:var(--blue);color:var(--white);border-color:var(--blue);}
  .btn--light:hover .btn-icon,.btn--dark:hover .btn-icon{border-left-color:rgba(255,255,255,.35);}
}

/* Icon buttons: Search, Menu, Close. On a phone only the icon shows. */
.icon-btn{
  display:inline-flex;align-items:center;gap:.7rem;min-height:44px;padding:0;background:none;border:0;cursor:pointer;
  color:var(--blue);font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
.icon-box{
  display:grid;place-items:center;flex:none;width:42px;height:42px;border:1px solid var(--line-blue);
  transition:background-color .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease);
}
.icon-box svg{width:17px;height:17px;}
.icon-btn[aria-expanded="true"] .icon-box{background:var(--blue);color:var(--white);border-color:var(--blue);}
.icon-btn:active .icon-box{background:rgba(31,77,181,.12);}
@media(hover:hover){.icon-btn:hover .icon-box{background:var(--blue);color:var(--white);border-color:var(--blue);}}
.burger{display:grid;gap:4px;width:18px;}
.burger i{display:block;height:1.5px;background:currentColor;}
.burger i:nth-child(2){width:70%;justify-self:end;}
@media(max-width:639px){
  .icon-box{width:40px;height:40px;}
  .icon-btn-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
}

/* A link with an icon before its underlined words: the email address and the map. */
.icon-link{display:inline-flex;align-items:center;gap:.65rem;text-decoration:none;}
.icon-link svg{flex:none;width:16px;height:16px;}
.icon-link span:not(.sr-only){border-bottom:1px solid currentColor;padding-bottom:.1rem;}
@media(hover:hover){.icon-link:hover span:not(.sr-only){border-bottom-width:2px;}}

/* ===== css/site/header.css ===== */

/* The header: frosted white, fixed at the top, condensing once the page moves. */
.site-head{
  position:fixed;top:0;left:0;right:0;z-index:100;color:var(--blue);
  background:rgba(255,255,255,.82);border-bottom:1px solid rgba(22,32,58,.08);
  transition:background-color .3s var(--ease);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
@supports(backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){
  .site-head{-webkit-backdrop-filter:blur(12px) saturate(1.2);backdrop-filter:blur(12px) saturate(1.2);}
}
/* solid once the page moves: over text, Firefox shows what lies behind a
   see-through bar far more than its opacity says */
.site-head.is-condensed{background:var(--white);}
.head-inner{display:flex;align-items:center;gap:1.25rem;height:var(--head-h);transition:height .3s var(--ease);}
.site-head.is-condensed .head-inner{height:var(--head-h-small);}
.wordmark{display:block;flex:none;line-height:0;margin-right:auto;}
.wordmark img{width:auto;height:46px;transition:height .3s var(--ease);-webkit-touch-callout:none;pointer-events:none;}
.site-head.is-condensed .wordmark img{height:38px;}
.head-tools{display:flex;align-items:center;gap:clamp(.75rem,2vw,1.75rem);}
@media(max-width:1023px){.wordmark img{height:38px;}.site-head.is-condensed .wordmark img{height:34px;}}
@media(max-width:639px){.wordmark img,.site-head.is-condensed .wordmark img{height:34px;}.head-tools{gap:.6rem;}}
/* on a phone the photographs run up behind the frosted header while the pages turn */
@media(max-width:899px){
  .site-head{transition:background-color .35s var(--ease),border-color .35s var(--ease);}
  .site-head.is-over-deck{background:rgba(255,255,255,.86);border-bottom-color:rgba(255,255,255,.5);}
}

/* ===== css/site/menu.css ===== */

/* The sidebar menu: slides in from the right over a dimmed page, its links following one by one. */
.menu{
  position:fixed;top:0;right:0;bottom:0;z-index:160;
  display:flex;flex-direction:column;width:min(28rem,100%);
  overflow-y:auto;overscroll-behavior:contain;
  padding:0 clamp(1.25rem,3vw,2.25rem) 2.5rem;
  color:var(--blue);background:var(--white);border-left:1px solid rgba(22,32,58,.08);box-shadow:-24px 0 60px rgba(22,32,58,.12);
  visibility:hidden;opacity:0;transform:translateX(24px);pointer-events:none;
  transition:opacity .35s var(--ease),transform .35s var(--ease),visibility 0s linear .35s;
}
.menu.is-open{visibility:visible;opacity:1;transform:none;pointer-events:auto;transition:opacity .35s var(--ease),transform .35s var(--ease);}
.menu-scrim{position:fixed;inset:0;z-index:150;background:rgba(22,32,58,.28);visibility:hidden;opacity:0;pointer-events:none;transition:opacity .35s var(--ease),visibility 0s linear .35s;}
body.nav-open .menu-scrim{visibility:visible;opacity:1;pointer-events:auto;transition:opacity .35s var(--ease);}
body.nav-open{overflow:hidden;}
@media(max-width:28rem){.menu{border-left:0;}}
.menu-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--head-h);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
.menu-logo{width:auto;height:38px;-webkit-touch-callout:none;pointer-events:none;}
.menu-nav{margin-top:1rem;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
.menu-nav ol{border-top:1px solid var(--line-ink);}
.menu-nav li{border-bottom:1px solid var(--line-ink);}
.menu-nav a{
  display:flex;align-items:baseline;gap:1rem;padding:.8rem 0;
  font-family:var(--display);font-size:clamp(1.5rem,4.28vw,1.8125rem);line-height:1.15;text-decoration:none;color:var(--blue);
  transition:color .2s var(--ease),padding-left .25s var(--ease);
}
.menu-nav a span{font-family:var(--sans);font-size:.75rem;font-weight:600;letter-spacing:.14em;color:var(--on-ink);min-width:1.75rem;}
@media(hover:hover){.menu-nav a:hover{color:var(--blue-deep);padding-left:.35rem;}}
.menu-nav a:active{color:var(--blue-deep);}
.menu-nav li,.menu-actions,.menu-contact{opacity:0;transform:translateX(18px);transition:opacity .45s var(--ease),transform .6s var(--ease);}
.menu.is-open .menu-nav li,.menu.is-open .menu-actions,.menu.is-open .menu-contact{opacity:1;transform:none;}
.menu.is-open .menu-nav li:nth-child(1){transition-delay:.06s;}
.menu.is-open .menu-nav li:nth-child(2){transition-delay:.1s;}
.menu.is-open .menu-nav li:nth-child(3){transition-delay:.14s;}
.menu.is-open .menu-nav li:nth-child(4){transition-delay:.18s;}
.menu.is-open .menu-nav li:nth-child(5){transition-delay:.22s;}
.menu.is-open .menu-nav li:nth-child(6){transition-delay:.26s;}
.menu.is-open .menu-actions{transition-delay:.3s;}
.menu.is-open .menu-contact{transition-delay:.34s;}
.menu-nav a[aria-current]{color:var(--blue-deep);}
.menu-actions{margin-top:2rem;}
@media(max-width:639px){.menu-actions .btn{width:100%;}.menu-nav a{padding:.95rem 0;}}
.menu-contact{margin-top:auto;padding-top:2.5rem;display:grid;gap:.5rem;font-size:.875rem;line-height:1.65;color:var(--on-ink);}
.menu-contact .label{color:var(--on-ink);}
.menu-contact a{color:var(--blue);}

/* ===== css/site/search.css ===== */

/* The search screen: a full-screen field over the page, with results listed as you type. */
.search{position:fixed;inset:0;z-index:200;overflow-y:auto;overscroll-behavior:contain;color:var(--blue);background:var(--field-bg);}
body.search-open{overflow:hidden;}
.search-inner{position:relative;max-width:calc(52rem + 2 * var(--gutter));margin-inline:auto;padding:clamp(5rem,13vh,8rem) var(--gutter) 4rem;}
.search-close{position:absolute;top:clamp(1rem,3vh,1.5rem);right:var(--gutter);}
.search-inner h2{font-size:clamp(1.9375rem,3.43vw,2.5625rem);}
.search-hint{margin-top:.5rem;font-size:.8125rem;color:var(--on-ink);}
.search-form{position:relative;margin-top:2rem;}
.search-form input{
  width:100%;padding:.6rem 2.75rem .7rem 0;
  font-family:var(--display);font-size:clamp(1.3125rem,2.95vw,1.9375rem);line-height:1.2;color:var(--blue);
  background:transparent;border:0;border-bottom:1px solid var(--line-blue);border-radius:0;-webkit-appearance:none;appearance:none;
}
.search-form input::placeholder{color:var(--on-ink);opacity:1;}
.search-form input:focus{outline:none;border-bottom-color:var(--blue);box-shadow:0 1px 0 var(--blue);}
.search-form input::-webkit-search-cancel-button{-webkit-appearance:none;}
.search-form svg{position:absolute;right:.25rem;top:50%;width:22px;height:22px;transform:translateY(-50%);color:var(--on-ink);pointer-events:none;}
.search-count{margin-top:1.25rem;min-height:1.5em;font-size:.8125rem;color:var(--on-ink);}
.search-results{margin-top:.75rem;border-top:1px solid var(--line-ink);}
.search-results:empty{border-top:0;}
.search-results li{border-bottom:1px solid var(--line-ink);}
.search-results a{display:grid;gap:.2rem;padding:1rem 0;text-decoration:none;}
.search-results .r-kind{font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--on-ink);}
.search-results .r-title{font-family:var(--display);font-size:1.1875rem;line-height:1.3;}
@media(hover:hover){.search-results a:hover .r-title{color:var(--blue-deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;}}
.search-results mark{background:rgba(157,179,234,.3);color:inherit;padding:0;}

/* ===== css/site/reader.css ===== */

/* The document reader: a PDF shown page by page in a panel over the page. */
.reader{position:fixed;inset:0;z-index:250;display:flex;align-items:center;justify-content:center;padding:clamp(0rem,3vw,2rem);background:rgba(22,32,58,.45);}
body.reader-open{overflow:hidden;}
.reader-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(62rem,100%);height:min(100%,58rem);background:var(--mist);}
.reader-panel:focus{outline:none;}
.reader-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;padding:1.1rem clamp(1rem,3vw,1.75rem);
  color:var(--blue);background:var(--white);border-bottom:1px solid var(--line);
}
.reader-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .75rem;font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--on-ink);}
.reader-meta .sep{width:1px;height:.9em;background:var(--line-ink);}
.reader-head h2{margin-top:.4rem;font-size:clamp(1.125rem,1.96vw,1.4375rem);line-height:1.25;}
.reader-close{flex:none;}
.reader-stage{overflow:auto;overscroll-behavior:contain;display:flex;justify-content:center;align-items:flex-start;padding:clamp(1rem,3vw,2rem);background:var(--mist);}
.reader-stage:focus-visible{outline-offset:-3px;}
.reader-canvas{display:block;max-width:100%;background:var(--white);box-shadow:0 2px 18px rgba(15,22,40,.18);}
.reader-message{align-self:center;max-width:28rem;text-align:center;}
.reader-note{font-size:.9375rem;color:var(--muted);}
.reader-note.is-error{color:var(--alert);}
.reader-message .btn{margin-top:1rem;}
.reader-foot{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1.5rem;padding:.75rem clamp(1rem,3vw,1.75rem);
  color:var(--blue);background:var(--white);border-top:1px solid var(--line);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
.reader-pager{display:flex;align-items:center;gap:1rem;}
.reader-step{display:grid;place-items:center;width:42px;height:42px;padding:0;background:transparent;color:var(--blue);border:1px solid var(--line-blue);cursor:pointer;}
@media(hover:hover){.reader-step:hover:not(:disabled){background:var(--blue);color:var(--white);}}
.reader-step:disabled{opacity:.35;cursor:default;}
.reader-step svg{width:15px;height:15px;}
.reader-count{min-width:7.5rem;text-align:center;font-size:.8125rem;color:var(--on-ink);}
@media(max-width:639px){.reader{padding:0;}.reader-panel{height:100%;}}

/* ===== css/shared/gate.css ===== */

/* The entry disclaimer: shown over the page until the visitor accepts it, once per visit. */
.gate{position:fixed;inset:0;z-index:300;display:none;align-items:center;justify-content:center;padding:clamp(.75rem,3vw,2rem);background:rgba(22,32,58,.4);}
@supports(backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){
  .gate{background:rgba(22,32,58,.22);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);}
}
html.gate-on{overflow:hidden;}
html.gate-on .gate{display:flex;}
.gate-panel{
  width:min(46rem,100%);max-height:calc(100vh - 1.5rem);max-height:calc(100dvh - 1.5rem);overflow-y:auto;overscroll-behavior:contain;
  padding:clamp(1.5rem,4.5vw,3.25rem);color:var(--blue);background:var(--white);border-top:3px solid var(--blue);
  box-shadow:0 24px 64px rgba(22,32,58,.25);
}
.gate-panel:focus{outline:none;}
.gate-logo{width:auto;height:40px;margin-bottom:clamp(1.25rem,3vw,2rem);-webkit-touch-callout:none;pointer-events:none;}
.gate-panel h2{font-size:clamp(1.6875rem,3.06vw,2.25rem);line-height:1.1;}
.gate-panel .intro{margin-top:1.25rem;font-size:.9375rem;line-height:1.75;color:var(--blue-deep);}
.gate-list{margin-top:1.25rem;border-top:1px solid var(--line-ink);}
.gate-list li{position:relative;padding:.8rem 0 .8rem 1.5rem;border-bottom:1px solid var(--line-ink);font-size:.875rem;line-height:1.7;color:var(--on-ink);}
.gate-list li::before{content:"";position:absolute;left:0;top:1.65em;width:.7rem;height:1px;background:var(--blue);}
.gate-foot{
  display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem;margin-top:clamp(1.5rem,3vw,2rem);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
.gate-decline{
  min-height:44px;padding:.5rem 0;background:none;border:0;cursor:pointer;
  font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--on-ink);
  text-decoration:underline;text-decoration-color:var(--line-ink);text-underline-offset:.4em;
}
@media(hover:hover){.gate-decline:hover{color:var(--blue);text-decoration-color:var(--blue);}}
.gate .note{font-size:.8125rem;color:var(--on-ink);}

/* ===== css/shared/loader.css ===== */

/* The loading screen: white, with the logo, while a page opens and while leaving for the next one. */
/* The scripts set html.is-loading and html.is-leaving; it never waits on anything but the page itself. */
.loader{
  position:fixed;inset:0;z-index:600;display:grid;place-items:center;align-content:center;gap:1.5rem;background:var(--white);
  opacity:0;visibility:hidden;pointer-events:none;transition:opacity .45s var(--ease),visibility 0s linear .45s;
}
html.is-loading .loader,html.is-leaving .loader{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .3s var(--ease);}
html.is-loading .loader{transition:none;}
.loader-logo{width:auto;height:clamp(52px,9vw,72px);}
.loader-line{position:relative;display:block;width:132px;height:2px;overflow:hidden;background:rgba(31,77,181,.14);}
.loader-line::after{content:"";position:absolute;inset:0;background:var(--blue);transform:translateX(-100%);animation:loader-line 1.1s var(--turn-ease) infinite;}
@keyframes loader-line{from{transform:translateX(-100%);}to{transform:translateX(100%);}}

/* ===== css/site/footer.css ===== */

/* The footer: logo, address, the page links, the Bar Council disclaimer and the copyright line. */
.footer{padding-block:clamp(3.5rem,6vw,5rem) 2rem;background:var(--white);color:var(--on-ink);border-top:1px solid var(--line);font-size:.875rem;line-height:1.7;}
.footer a{color:var(--blue);text-decoration:none;}
@media(hover:hover){.footer a:hover{text-decoration:underline;text-decoration-color:var(--on-ink);text-underline-offset:.3em;}}
.footer-top{display:grid;gap:2.5rem var(--gap);padding-bottom:clamp(2.5rem,5vw,3.5rem);border-bottom:1px solid var(--line-ink);}
.footer-logo img{width:auto;height:48px;-webkit-touch-callout:none;pointer-events:none;}
.footer-firm{margin-top:1.5rem;}
.footer-firm .firm-line{display:block;color:var(--blue-deep);}
.footer-nav{display:grid;gap:2rem var(--gap);grid-template-columns:repeat(2,minmax(0,1fr));}
.footer-nav h2{font-family:var(--sans);font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--on-ink);}
.footer-nav ul{margin-top:.9rem;display:grid;gap:.45rem;}
@media(min-width:768px){.footer-nav{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(min-width:1024px){
  .footer-top{grid-template-columns:repeat(12,minmax(0,1fr));}
  .footer-brand{grid-column:1 / 5;}
  .footer-nav{grid-column:6 / 13;}
}
.footer-legal{margin-top:1.75rem;max-width:88ch;font-size:.75rem;line-height:1.75;}
.footer-legal .legal-label{color:var(--blue-deep);font-weight:500;}
.footer-base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem 2rem;margin-top:1.5rem;font-size:.75rem;}

/* ===== css/site/to-top.css ===== */

/* The back-to-top button: fades in at the bottom right once the page has scrolled. */
.to-top{
  position:fixed;right:clamp(.75rem,2vw,1.5rem);bottom:clamp(.75rem,2vw,1.5rem);z-index:80;
  display:grid;place-items:center;width:46px;height:46px;padding:0;
  background:rgba(255,255,255,.86);color:var(--blue);border:1px solid rgba(31,77,181,.35);cursor:pointer;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 6px 18px rgba(22,32,58,.12);
  opacity:0;visibility:hidden;transform:translateY(8px);
  transition:opacity .3s var(--ease),transform .3s var(--ease),visibility 0s linear .3s,background-color .2s var(--ease);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
.to-top.is-visible{opacity:1;visibility:visible;transform:none;transition:opacity .3s var(--ease),transform .3s var(--ease),background-color .2s var(--ease);}
@media(hover:hover){.to-top:hover{background:var(--blue);color:var(--white);border-color:var(--blue);}}
.to-top svg{width:15px;height:15px;}

/* ===== css/site/thumb.css ===== */

/* Preview pictures of insights, used by the home panel's latest list and the Insights page. */
/* The first page of a PDF, drawn in the browser by the reader's own library,
   or for an article a small page set with its opening text. A ruled blank
   page stands in until the preview is ready. The page's type is sized in
   container units, so it scales with the box it sits in. */
.thumb{
  position:relative;display:block;flex:none;aspect-ratio:3 / 4;overflow:hidden;background:#F3F5F9;container-type:inline-size;
  box-shadow:0 1px 2px rgba(4,7,16,.22),0 8px 22px rgba(4,7,16,.2);
}
.thumb::before{
  content:"";position:absolute;left:16%;right:16%;top:14%;height:62%;
  background:repeating-linear-gradient(180deg,rgba(22,32,58,.13) 0 2px,transparent 2px 10px);
}
.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0;opacity:0;transition:opacity .6s var(--ease);}
.thumb.is-ready img{opacity:1;}
.thumb.is-ready::before{display:none;}
.thumb-page{
  position:absolute;inset:0;display:flex;flex-direction:column;gap:3cqw;padding:10cqw 9cqw;overflow:hidden;
  background:var(--white);color:var(--ink);font-size:3px;font-size:3.7cqw;line-height:1.5;opacity:0;transition:opacity .6s var(--ease);
}
.thumb.is-ready .thumb-page{opacity:1;}
.thumb-h,.thumb-p{display:block;flex:none;}
.thumb-h{font-size:5.8cqw;font-weight:500;line-height:1.22;color:var(--blue-deep);}

/* ===== css/site/home.css ===== */

/* The homepage: full-screen photograph panels under frosted glass, the deck that turns them, and its rail. */
/* Each panel is a photograph with a pane of frosted white glass over
   it. On a phone the photograph fills the screen and the pane is a sheet of
   tinted glass across its foot; from 900px the pane takes one half. With
   the deck on (html.js-deck, set by site.js unless motion is reduced or a
   panel would not fit) the panels are stuck in place and each new one
   slides up over the last like a turning page: one wheel step, key or
   swipe per page. */
.deck{position:relative;background:var(--mist-2);}
.panel{position:relative;display:flex;min-height:100vh;min-height:100svh;overflow:hidden;color:var(--blue);background:var(--mist-2);}
.panel--navy{--pane:var(--pane-navy);--glass:rgba(255,255,255,.72);}
.panel--blue{--pane:var(--pane-blue);--glass:rgba(234,241,252,.76);}
.panel:focus{outline:none;}
.panel-stage{position:relative;flex:1;display:flex;flex-direction:column;justify-content:flex-end;transform-origin:50% 100%;}
.panel-photo{position:absolute;inset:0;background:var(--mist-2);pointer-events:none;}
.panel-photo picture,.panel-photo img{display:block;width:100%;height:100%;}
.panel-photo img{object-fit:cover;}
#top .panel-photo img{object-position:30% 50%;}
#panel-firm .panel-photo img{object-position:70% 50%;}
#careers .panel-photo img{object-position:30% 50%;}
.panel-pane{position:relative;background:var(--pane);}
@supports(backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){
  .panel-pane{-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);}
}
.panel-copy{padding:clamp(2rem,7vw,3rem) var(--gutter) clamp(3rem,9vw,4.5rem);}
.panel h1{font-size:clamp(2rem,3.73vw,3.625rem);line-height:1.05;letter-spacing:-.02em;max-width:15ch;}
.panel h2{margin-top:1rem;font-size:clamp(1.9375rem,3.44vw,3rem);line-height:1.06;letter-spacing:-.015em;}
.panel-text{margin-top:clamp(1.1rem,2.2vh,1.5rem);max-width:34rem;font-size:clamp(.9375rem,1.14vw,1rem);line-height:1.7;color:var(--blue-deep);}
.panel-actions{display:flex;flex-wrap:wrap;gap:.9rem 1rem;margin-top:clamp(1.5rem,3.5vh,2.5rem);}
.panel-list{margin-top:clamp(1.25rem,2.5vh,1.75rem);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.5rem;max-width:34rem;border-top:1px solid var(--line-ink);}
.panel-list li{border-bottom:1px solid var(--line-ink);}
.panel-list a{display:block;padding:.55rem 0;font-size:.875rem;line-height:1.35;color:var(--blue);text-decoration:none;transition:color .2s var(--ease),padding-left .25s var(--ease);}
.panel-latest{margin-top:clamp(1.25rem,2.5vh,1.75rem);max-width:34rem;border-top:1px solid var(--line-ink);}
.panel-latest li{border-bottom:1px solid var(--line-ink);}
.panel-latest a{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.25rem 1rem;padding:.7rem 0;text-decoration:none;color:var(--blue);}
.panel-latest .thumb{grid-row:1 / span 2;width:44px;}
.panel-latest .pl-title{font-family:var(--display);font-size:1.0625rem;line-height:1.3;}
.panel-latest .pl-meta{font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--on-ink);}
/* the Deal Desk panel's newest deals: no preview, the title in two lines at most and its facts in one.
   A short screen takes one line per title, and once deals are listed (.has-deals, set by site.js) a
   short desktop drops the sentence above them, as a phone does, so the panel's button stays on the
   page (deal titles run long, and a cut-off panel turns the deck off). Until then the sentence stays. */
.panel-deals a{grid-template-columns:minmax(0,1fr);}
.panel-deals .pl-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;}
.panel-deals .pl-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
@media(max-height:760px){#panel-deals .pl-title{-webkit-line-clamp:1;}}
@media(min-width:900px) and (max-height:640px){#panel-deals .has-deals .panel-text{display:none;}}
@media(hover:hover){
  .panel-list a:hover{color:var(--blue-deep);padding-left:.3rem;}
  .panel-latest a:hover .pl-title{text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px;}
}

/* the round arrow at the foot of a panel, pointing on to the next */
.cue{
  position:absolute;left:50%;bottom:1.5rem;z-index:3;display:none;place-items:center;width:44px;height:44px;margin-left:-22px;
  color:var(--blue);background:rgba(255,255,255,.72);border:1px solid rgba(31,77,181,.3);border-radius:50%;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
.cue svg{width:16px;height:16px;animation:cue 2.2s var(--ease) infinite;}
@keyframes cue{0%,100%{transform:translateY(-3px);}50%{transform:translateY(4px);}}

/* phones and small tablets: the photograph fills the screen, the pane is
   tinted glass at its foot, and the page reads from the bottom up */
@media(max-width:899px){
  .panel-photo::after{
    content:"";position:absolute;inset:0;
    background:linear-gradient(180deg,rgba(8,12,24,.3) 0,rgba(8,12,24,.06) 26%,rgba(8,12,24,0) 42%);
  }
  .panel-pane{background:var(--glass);border-top:1px solid rgba(255,255,255,.55);}
  @supports(backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){
    .panel-pane{-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);}
  }
  .panel-copy{padding:1.6rem var(--gutter) 1.9rem;}
  .panel-kicker{display:flex;align-items:center;gap:.75rem;}
  .panel-kicker::before{content:"";width:1.5rem;height:1px;background:currentColor;opacity:.7;}
  .panel h1{font-size:clamp(1.8125rem,7.85vw,2.5625rem);line-height:1.04;}
  .panel h2{margin-top:.7rem;font-size:clamp(1.8125rem,7.65vw,2.4375rem);line-height:1.04;}
  .panel-text{margin-top:.8rem;font-size:.875rem;line-height:1.6;}
  .panel-actions{display:grid;gap:.6rem;margin-top:1.4rem;}
  .panel-actions .btn{width:100%;min-height:48px;}
  .panel-actions .btn-icon{width:48px;}
  .panel-list{margin-top:1rem;gap:0 1rem;}
  .panel-list a{padding:.5rem 0;font-size:.8125rem;}
  .panel-latest{margin-top:1rem;}
  .panel-latest a{padding:.6rem 0;gap:.15rem .9rem;}
  .panel-latest .thumb{width:38px;}
  .panel-latest .pl-title{font-size:1rem;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;}
  .panel-latest .pl-meta{font-size:.6875rem;color:var(--on-ink);}
  #panel-insights .panel-text,#panel-deals .has-deals .panel-text{display:none;}
  /* the scales sit right of centre in their tall crop, above the pane */
  #panel-practice .panel-photo img{object-position:75% 0;}
}
@media(min-width:600px) and (max-width:899px){
  .panel-copy{padding-inline:clamp(1.5rem,6vw,3rem);}
  .panel-copy > *{max-width:36rem;}
  .panel-actions{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:899px) and (max-height:720px){
  #top .panel-text,#panel-firm .panel-text{display:none;}
}
@media(max-width:899px) and (orientation:landscape){
  .panel-photo::after{background:linear-gradient(180deg,rgba(8,12,24,.3),rgba(8,12,24,.06) 40%,rgba(8,12,24,0));}
}

@media(min-width:900px){
  .panel-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .panel-pane{grid-column:1;grid-row:1;display:flex;align-items:center;}
  .panel--pane-right .panel-pane{grid-column:2;}
  .panel-copy{width:100%;padding:calc(var(--head-h) + 2rem) var(--inner) 3.5rem var(--edge);}
  .panel--pane-right .panel-copy{padding:calc(var(--head-h) + 2rem) calc(var(--edge) + 7rem) 3.5rem var(--inner);}
  .cue{display:grid;}
  #top .cue{left:25%;}
  /* the fountain pen: the nib and the cap stay in the open half */
  #panel-deals .panel-photo img{object-position:70% 50%;}
  /* the diary is an upright photograph: it fills the open half only */
  #careers .panel-photo{right:50%;}
  #careers .panel-photo img{object-position:50% 40%;}
}

/* the deck: stuck panels that turn over one another */
.js-deck .deck{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
.js-deck .panel{position:sticky;top:0;height:100vh;height:100svh;min-height:0;}
.js-deck .panel + .panel{box-shadow:0 -28px 56px rgba(22,32,58,.2);}
.js-deck .panel-stage{transform:scale(calc(1 - var(--turn, 0) * .07));will-change:transform;}
.js-deck .panel::after{content:"";position:absolute;inset:0;z-index:4;background:var(--mist);opacity:calc(var(--turn, 0) * .75);pointer-events:none;}
.js-deck .panel-photo img{transform:scale(1.08);transition:transform 1.8s var(--ease);}
.js-deck .panel.is-active .panel-photo img{transform:none;}
.js-deck .panel-copy > *{opacity:0;transform:translateY(22px);transition:opacity .6s var(--ease),transform .8s var(--ease);}
.js-deck .panel.is-active .panel-copy > *{opacity:1;transform:none;}
.js-deck .panel.is-active .panel-copy > :nth-child(1){transition-delay:.15s;}
.js-deck .panel.is-active .panel-copy > :nth-child(2){transition-delay:.25s;}
.js-deck .panel.is-active .panel-copy > :nth-child(3){transition-delay:.35s;}
.js-deck .panel.is-active .panel-copy > :nth-child(4){transition-delay:.45s;}
.js-deck .panel.is-active .panel-copy > :nth-child(5){transition-delay:.55s;}
@media(max-width:899px){
  /* the pane may not climb past the header; site.js turns the deck off
     rather than let a panel's words be cut off */
  .js-deck .panel-pane{max-height:calc(100% - var(--head-h) - 2.25rem);overflow:hidden;transform:translateY(24px);transition:transform .9s var(--ease);}
  .js-deck .panel.is-active .panel-pane{transform:none;}
}

/* The rail: where you are in the deck. On a desktop, a line down the right
   with a marker for each page, filling as the pages turn, the page's name
   beside its marker and a page count above; the other names show when the
   rail is pointed at. On a phone, a bar for each page across the top of the screen. */
.rail{
  position:fixed;z-index:90;display:none;visibility:hidden;opacity:0;transition:opacity .3s var(--ease),visibility 0s linear .3s;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
.rail.is-visible{visibility:visible;opacity:1;transition:opacity .3s var(--ease);}
.js-deck .rail{display:block;}
.rail a{position:relative;display:flex;align-items:center;text-decoration:none;color:var(--white);}
.rail-mark{position:relative;z-index:1;flex:none;display:block;}
@media(min-width:900px){
  .rail{right:clamp(1.25rem,2.6vw,2.5rem);top:50%;transform:translateY(-50%);}
  .rail-count{display:flex;align-items:baseline;justify-content:flex-end;gap:.35rem;margin-bottom:.9rem;padding-right:.05rem;color:var(--white);text-shadow:0 1px 10px rgba(4,7,16,.5);}
  .rail-now{font-family:var(--display);font-size:1.6875rem;line-height:1;}
  .rail-all{font-size:.75rem;font-weight:600;letter-spacing:.14em;color:rgba(255,255,255,.82);}
  .rail-body{position:relative;}
  .rail-track{position:absolute;right:5px;top:20px;bottom:20px;width:1px;background:rgba(255,255,255,.3);}
  .rail-fill{position:absolute;inset:0;background:var(--white);transform-origin:50% 0;transform:scaleY(var(--rail-progress, 0));}
  .rail ol{display:grid;}
  .rail a{justify-content:flex-end;gap:.9rem;min-height:40px;}
  .rail-mark{
    width:11px;height:11px;border:1px solid rgba(255,255,255,.8);background:rgba(15,22,40,.85);transform:rotate(45deg) scale(.72);
    transition:background-color .3s var(--ease),transform .3s var(--ease),border-color .3s var(--ease);
  }
  .rail-label{
    padding:.3rem .55rem;white-space:nowrap;font-size:.6875rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--white);
    background:var(--blue);opacity:0;transform:translateX(6px);transition:opacity .3s var(--ease),transform .3s var(--ease);
  }
  .rail a[aria-current="true"] .rail-mark,.rail li.is-past .rail-mark{background:var(--white);border-color:var(--white);}
  .rail a[aria-current="true"] .rail-mark{transform:rotate(45deg) scale(1);box-shadow:0 0 0 4px rgba(255,255,255,.16);}
  .rail a[aria-current="true"] .rail-label,.rail a:focus-visible .rail-label{opacity:1;transform:none;}
  @media(hover:hover){
    .rail:hover .rail-label{opacity:1;transform:none;}
    .rail:hover a:not([aria-current="true"]) .rail-label{background:rgba(255,255,255,.9);color:var(--blue);}
    .rail a:hover .rail-label{background:var(--blue)!important;color:var(--white)!important;}
  }
  .rail.is-on-glass .rail-count{color:var(--blue);text-shadow:none;}
  .rail.is-on-glass .rail-all{color:var(--on-ink);}
  .rail.is-on-glass .rail-track{background:rgba(31,77,181,.28);}
  .rail.is-on-glass .rail-fill{background:var(--blue);}
  .rail.is-on-glass .rail-mark{border-color:rgba(31,77,181,.75);background:var(--white);}
  .rail.is-on-glass a[aria-current="true"] .rail-mark,.rail.is-on-glass li.is-past .rail-mark{background:var(--blue);border-color:var(--blue);}
  .rail.is-on-glass a[aria-current="true"] .rail-mark{box-shadow:0 0 0 4px rgba(31,77,181,.16);}
}
@media(max-width:899px){
  .rail{top:calc(var(--head-h) + .35rem);left:var(--gutter);right:var(--gutter);}
  .rail-count,.rail-track{display:none;}
  .rail ol{display:flex;gap:6px;}
  .rail li{flex:1;}
  .rail a{display:block;padding:11px 0;}
  .rail-mark{height:2px;background:rgba(255,255,255,.34);overflow:hidden;}
  .rail-mark::after{content:"";position:absolute;inset:0;background:var(--white);transform:scaleX(0);transform-origin:0 50%;transition:transform .6s var(--ease);}
  .rail li.is-past .rail-mark::after,.rail a[aria-current="true"] .rail-mark::after{transform:none;}
  .rail-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
}

/* ===== css/site/page.css ===== */

/* The section pages (Practice areas, Sectors, Insights, About Us, Contact): page head, body and the way on. */
/* Pages of their own on white, opened from the home panels and the sidebar. */
body.is-page{background:var(--white);}
.page{padding-top:var(--head-h);}
.page-head{padding-top:clamp(2.75rem,8vw,5.5rem);padding-bottom:clamp(2rem,5vw,3.25rem);}
.page-head h1{margin-top:.9rem;max-width:18ch;font-size:clamp(2.3125rem,5.43vw,4.0625rem);line-height:1.02;letter-spacing:-.02em;color:var(--blue);}
.page-intro{margin-top:1.1rem;max-width:40rem;font-family:var(--display);font-size:clamp(1.125rem,1.69vw,1.3125rem);line-height:1.45;color:var(--blue-deep);}
.page-actions{margin-top:1.75rem;}
.page-body{padding-bottom:clamp(3.5rem,8vw,6rem);}
.page-body > :first-child{margin-top:0;}
.page-body h2,.page-body h3{color:var(--blue-deep);}

/* the way on to the next page, at the foot of each */
.page-next{border-top:1px solid var(--line);}
.page-next a{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem 1.5rem;padding-block:clamp(1.75rem,4vw,2.75rem);text-decoration:none;color:var(--blue);}
.page-next .label{grid-column:1;color:var(--on-ink);}
.page-next-title{grid-column:1;font-family:var(--display);font-size:clamp(1.6875rem,3.72vw,2.75rem);line-height:1.05;}
.page-next-icon{
  grid-column:2;grid-row:1 / span 2;display:grid;place-items:center;width:56px;height:56px;border:1px solid var(--line-blue);
  transition:background-color .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease);
}
.page-next-icon svg{width:18px;height:18px;transition:transform .25s var(--ease);}
.page-next a:active .page-next-icon{background:rgba(31,77,181,.12);}
@media(hover:hover){
  .page-next a:hover .page-next-title{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em;}
  .page-next a:hover .page-next-icon{background:var(--blue);color:var(--white);border-color:var(--blue);}
  .page-next a:hover .page-next-icon svg{transform:translateX(3px);}
}

/* ===== css/site/practice-areas.css ===== */

/* The Practice areas page: the numbered list of areas, two columns from 768px, each row a link. */
.areas{border-top:1px solid var(--line);}
@media(min-width:768px){.areas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--gap);}}
.area{
  position:relative;display:grid;grid-template-columns:2.5rem minmax(0,1fr);column-gap:.75rem;padding:1.3rem 2.25rem 1.45rem 0;
  border-bottom:1px solid var(--line);transition:background-color .25s var(--ease);
}
.area::before{
  content:"";position:absolute;right:.35rem;top:1.75rem;width:15px;height:10px;transition:transform .25s var(--ease);
  background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 10' fill='none' stroke='%231F4DB5' stroke-width='1.4'%3E%3Cpath d='M0 5h13.5M9.5 1l4 4-4 4'/%3E%3C/svg%3E");
}
.area:active{background:rgba(31,77,181,.06);}
.area-no{padding-top:.45rem;font-size:.75rem;font-weight:600;letter-spacing:.14em;color:var(--blue);}
.area h2{font-size:clamp(1.1875rem,1.51vw,1.3125rem);line-height:1.25;}
.area h2 a{text-decoration:none;text-decoration-color:var(--blue);text-decoration-thickness:1px;text-underline-offset:.2em;}
.area h2 a::after{content:"";position:absolute;inset:0;}
.area p{grid-column:2;margin-top:.45rem;max-width:40ch;font-size:.875rem;line-height:1.65;color:var(--muted);}
@media(hover:hover){.area:hover h2 a{color:var(--blue);text-decoration-line:underline;}.area:hover::before{transform:translateX(3px);}}

/* ===== css/site/sectors.css ===== */

/* The Sectors page: the list of sectors, two columns from 640px and three from 1024px. */
.sectors{display:grid;gap:0 var(--gap);border-top:1px solid var(--line);}
@media(min-width:640px){.sectors{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(min-width:1024px){.sectors{grid-template-columns:repeat(3,minmax(0,1fr));}}
.sector{padding:1.35rem 0 1.55rem;border-bottom:1px solid var(--line);}
.sector h2{font-size:1.25rem;line-height:1.25;}
.sector p{margin-top:.55rem;font-size:.875rem;line-height:1.65;color:var(--muted);max-width:36ch;}

/* ===== css/site/insights.css ===== */

/* The Insights page: the category tabs, the latest insight featured, then the rest as rows. */

/* category tabs (and the Deal Desk's practice-area tabs, deals.css); on a
   phone they stay on one line and scroll sideways, edge to edge */
.insight-filter,.deal-filter{display:flex;flex-wrap:wrap;gap:0 1.5rem;margin-top:clamp(1.5rem,3vw,2.25rem);border-bottom:1px solid var(--line-ink);}
.filter-tab{
  margin-bottom:-1px;padding:.75rem 0;background:none;border:0;border-bottom:2px solid transparent;cursor:pointer;
  font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--on-ink);
  transition:color .2s var(--ease),border-color .2s var(--ease);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
@media(hover:hover){.filter-tab:hover{color:var(--blue);}}
.filter-tab[aria-pressed="true"]{color:var(--blue);border-bottom-color:var(--blue);}
/* while the list loads (insights.js): the tabs' row and the room for the
   first three insights (never less than 40rem tall once they are in) are
   held, so the page does not jump when they arrive */
.insight-filter.is-waiting > *{visibility:hidden;}
.insight-grid.is-waiting{min-height:40rem;}
@media(max-width:767px){
  .insight-filter,.deal-filter{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);}
  .insight-filter::-webkit-scrollbar,.deal-filter::-webkit-scrollbar{display:none;}
  .filter-tab{flex:none;}
}

/* every insight: the link on its title covers the whole card or row */
.insight{position:relative;}
.insight-title{color:var(--blue-deep);}
.insight-title a{text-decoration:none;text-decoration-color:currentColor;text-decoration-thickness:1px;text-underline-offset:.2em;}
.insight-title a::after{content:"";position:absolute;inset:0;}
@media(hover:hover){
  .insight:hover .insight-title a{text-decoration-line:underline;}
  .insight:hover .insight-art .thumb{transform:translate(-50%,-6px);}
}

/* the latest, featured: its preview above it, and beside it from 1280px */
.insight--feature{display:grid;color:var(--blue-deep);background:var(--white);box-shadow:0 18px 40px rgba(22,32,58,.1);}
.insight--feature .insight-text{display:flex;flex-direction:column;gap:1rem;padding:clamp(1.5rem,3vw,2.5rem);}
.insight-meta{display:flex;flex-wrap:wrap;gap:.35rem 1rem;font-size:.75rem;font-weight:600;line-height:1.5;letter-spacing:.12em;text-transform:uppercase;color:var(--on-ink);}
.insight-latest{color:var(--blue);}
.insight--feature .insight-title{font-size:clamp(1.4375rem,2.27vw,1.9375rem);line-height:1.18;}
.insight-summary{font-size:.9375rem;line-height:1.7;color:var(--on-ink);max-width:52ch;}
.insight-format{font-size:.75rem;font-weight:500;color:var(--muted);}
.insight--feature .insight-format{margin-top:auto;padding-top:.5rem;color:var(--on-ink);}
.insight-art{position:relative;order:-1;height:15rem;overflow:hidden;background:linear-gradient(160deg,var(--mist),var(--mist-2));}
.insight-art .thumb{position:absolute;z-index:1;left:50%;top:2.25rem;width:min(46%,12rem);transform:translateX(-50%);transition:transform .45s var(--ease);}
@media(min-width:1280px){
  .insight--feature{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);}
  .insight-art{order:0;height:auto;min-height:100%;}
  .insight-art .thumb{top:2.5rem;width:min(62%,13rem);}
}

/* the rest, as rows with a small preview */
.insight--row{
  display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.3rem 1.1rem;padding:1.2rem 0 1.3rem;
  border-bottom:1px solid var(--line);transition:background-color .25s var(--ease);
}
.insight--row:active{background:rgba(31,77,181,.06);}
@media(hover:hover){.insight--row:hover .insight-title a{color:var(--blue);}}
.insight--row .thumb{grid-row:1 / span 3;width:58px;}
.insight--row .insight-date{display:flex;flex-wrap:wrap;gap:0 .9rem;}
.insight--feature + .insight--row{margin-top:clamp(1.5rem,3vw,2.25rem);border-top:1px solid var(--line);}
.insight-date,.insight-cat{font-size:.75rem;line-height:1.5;color:var(--muted);}
.insight-date .insight-cat{font-weight:500;}
.insight--row .insight-title{font-size:1.125rem;line-height:1.35;}
@media(min-width:768px){.insight--row .thumb{width:68px;}.insight--row{column-gap:1.4rem;}}
.insight.is-new{animation:insight-in .45s var(--ease) both;}
@keyframes insight-in{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}
.insight-empty{padding:1.5rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:.9375rem;color:var(--muted);}
.insight-more{margin-top:1.75rem;}

/* ===== css/site/deals.css ===== */

/* The Deal Desk page: the practice-area tabs (styled with the insights' tabs,
   insights.css), then the deals as cards, one column, two from 640px, three
   from 1024px, each card a link to the deal's own page. */
.deal-grid{display:grid;gap:var(--gap);}
@media(min-width:640px){.deal-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(min-width:1024px){.deal-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
.deal-filter + .deal-grid{margin-top:0;}

.deal{
  position:relative;display:flex;flex-direction:column;gap:.85rem;min-width:0;padding:clamp(1.35rem,2.4vw,1.85rem);
  background:var(--white);border:1px solid var(--line);border-top:3px solid var(--blue);
  transition:box-shadow .25s var(--ease),transform .25s var(--ease),background-color .25s var(--ease);
}
.deal:active{background:var(--field-bg);}
.deal-areas{font-size:.75rem;font-weight:600;line-height:1.5;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);}
.deal-title{font-size:clamp(1.1875rem,1.51vw,1.3125rem);line-height:1.3;color:var(--blue-deep);overflow-wrap:break-word;}
.deal-title a{text-decoration:none;text-decoration-color:currentColor;text-decoration-thickness:1px;text-underline-offset:.2em;}
.deal-title a::after{content:"";position:absolute;inset:0;}
.deal-summary{
  font-size:.875rem;line-height:1.65;color:var(--muted);
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;
}
.deal-foot{
  display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem 1rem;
  margin-top:auto;padding-top:1rem;border-top:1px solid var(--line);font-size:.75rem;line-height:1.5;color:var(--muted);
}
/* the same height as the date, so the rule above sits level whether or not there is a value */
.deal-value{font-size:.9375rem;font-weight:600;line-height:1.2;color:var(--blue-deep);}
@media(hover:hover){
  .deal:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(22,32,58,.1);}
  .deal:hover .deal-title a{color:var(--blue);text-decoration-line:underline;}
}
.deal.is-new{animation:deal-in .45s var(--ease) both;}
@keyframes deal-in{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}

.deal-empty{padding:1.5rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:.9375rem;color:var(--muted);}
.deal-more{margin-top:1.75rem;}

/* ===== css/site/about.css ===== */

/* The About Us page: the lede, two columns of copy, the firm's points and its distinctions. */
.firm-lede{font-family:var(--display);font-size:clamp(1.3125rem,1.98vw,1.6875rem);line-height:1.38;max-width:30ch;color:var(--blue-deep);}
.firm-copy{margin-top:1.5rem;display:grid;gap:1.1rem var(--gap);}
.firm-copy p{max-width:36rem;}
@media(min-width:768px){.firm-copy{grid-template-columns:repeat(2,minmax(0,1fr));}}
.firm-points{margin-top:clamp(2.5rem,5vw,3.5rem);display:grid;gap:0 var(--gap);border-top:1px solid var(--line);}
@media(min-width:768px){.firm-points{grid-template-columns:repeat(2,minmax(0,1fr));}}
.firm-point{padding:1.5rem 0 1.6rem;border-bottom:1px solid var(--line);}
.firm-point h2{font-size:clamp(1.25rem,1.79vw,1.4375rem);line-height:1.25;}
.firm-point p{margin-top:.75rem;max-width:36rem;}
.firm-distinction{margin-top:clamp(2.5rem,5vw,3.5rem);}
.firm-distinction h2{font-size:clamp(1.3125rem,1.92vw,1.625rem);}
.distinctions{margin-top:1.25rem;max-width:44rem;border-top:1px solid var(--line);}
.distinctions li{position:relative;padding:1.1rem 0 1.2rem 1.75rem;border-bottom:1px solid var(--line);}
.distinctions li::before{content:"";position:absolute;left:0;top:1.85rem;width:.875rem;height:1px;background:var(--blue);}
.distinctions strong{font-weight:600;color:var(--ink);}

/* ===== css/site/contact.css ===== */

/* The Contact page: the office details and the enquiry form, side by side from 1024px. */
.contact-grid{display:grid;gap:clamp(2.5rem,6vw,4rem) var(--gap);align-items:start;}
@media(min-width:1024px){.contact-grid{grid-template-columns:minmax(0,4fr) minmax(0,7fr);column-gap:clamp(3rem,6vw,6rem);}}

/* the office */
.office .firm{font-family:var(--display);font-size:1.4375rem;line-height:1.25;color:var(--blue);}
.office .firm-sub{display:block;margin-top:.35rem;font-family:var(--sans);font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--on-ink);}
.office address{margin-top:1.25rem;font-size:1rem;line-height:1.75;color:var(--blue-deep);}
.office-links{margin-top:1.5rem;display:grid;gap:.85rem;}
.office-links a{color:var(--blue);}
.office-note{margin-top:1.75rem;max-width:26rem;font-size:.8125rem;line-height:1.65;color:var(--on-ink);}

/* the enquiry form */
.enquiry h2{font-size:clamp(1.5rem,2.23vw,1.9375rem);}
.enquiry-intro{margin-top:.5rem;font-size:.875rem;color:var(--muted);}
.form-grid{display:grid;gap:1.25rem var(--gap);margin-top:1.75rem;}
@media(min-width:640px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.field-full,.consent,.form-status,.form-actions{grid-column:1 / -1;}}
.field label{display:block;margin-bottom:.45rem;font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);}
.field .req{color:var(--blue);}
.control{display:block;}
.control input,.control select,.control textarea{
  display:block;width:100%;min-height:50px;padding:.75rem .9rem;
  font-size:1rem;line-height:1.4;color:var(--ink);
  background:var(--field-bg);border:1px solid var(--field);border-radius:0;
  transition:border-color .2s var(--ease),box-shadow .2s var(--ease);
}
.control select{
  -webkit-appearance:none;appearance:none;padding-right:2.5rem;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%2316203A' stroke-width='1.3'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .9rem center;background-size:12px 8px;
}
.control textarea{min-height:8rem;resize:vertical;}
.control input::placeholder,.control textarea::placeholder{color:var(--field);opacity:1;}
.control input:focus,.control select:focus,.control textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 1px var(--blue);}
.error{display:none;margin-top:.4rem;font-size:.75rem;color:var(--alert);}
.field.has-error .control input,.field.has-error .control textarea{border-color:var(--alert);box-shadow:0 0 0 1px var(--alert);}
.field.has-error .error{display:block;}
.consent{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem;align-items:start;font-size:.8125rem;line-height:1.6;color:var(--muted);}
.consent input{width:18px;height:18px;margin:.15rem 0 0;accent-color:var(--blue);cursor:pointer;}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0;}
.form-status{padding:.85rem 1rem;border-left:2px solid var(--blue);background:var(--mist-2);font-size:.875rem;color:var(--ink);}
.form-status.is-error{border-left-color:var(--alert);background:#F2E4E6;color:var(--alert);}
.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:.25rem;}
.form-note{font-size:.75rem;color:var(--muted);}

/* ===== css/site/motion.css ===== */

/* Motion: blocks that rise into view as the page scrolls, and stillness for those who ask for reduced motion. */
/* site.js sets html.js-reveal (unless motion is reduced) and marks each [data-reveal] block
   .is-in once it scrolls into view, or .is-focus-in as well when focus lands in it first,
   so it shows at once. An inline --i staggers blocks that rise together. */
.js-reveal [data-reveal]{opacity:0;transform:translateY(16px);transition:opacity .55s var(--ease),transform .6s var(--ease);transition-delay:calc(var(--i,0) * 70ms);}
.js-reveal [data-reveal].is-in{opacity:1;transform:none;}
.js-reveal [data-reveal].is-focus-in{transition:none;}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important;}
  .js-reveal [data-reveal]{opacity:1;transform:none;}
}

/* ===== css/site/print.css ===== */

/* Print: the words only, black on white, without the screen furniture. */
/* Must stay last in bundles.json: these rules weigh the same as the screen rules they override. */
@media print{
  body{background:#fff;}
  .site-head,.menu,.menu-scrim,.search,.gate,.reader,.to-top,.skip,.rail,.cue,.loader,.page-next,.insight-filter,.insight-more,.deal-filter,.deal-more,.enquiry,.panel-photo,.thumb,.insight-art{display:none!important;}
  .panel,.insight--feature,.footer{color:#000;background:#fff;}
  .panel-pane{background:#fff!important;}
  .panel *{color:#000!important;}
  .js-reveal [data-reveal]{opacity:1;transform:none;}
}
