/* ---------- practice pages (layout system from qureshiassociates.com) ---------- */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{color:var(--ink);font-family:'Archivo',system-ui,sans-serif;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit}
h1,h2,h3{color:var(--teal)}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}

/* woven backgrounds */
.method,.principal,.contact,.hero,#situations,#engagements,#together{position:relative;overflow:hidden}
.method>.wrap,.principal>.wrap,.contact>.wrap,.hero>.wrap,#situations>.wrap,#engagements>.wrap,#together>.wrap{position:relative;z-index:1}
.weave{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;display:flex}
.weave i{position:relative;flex:none;width:44px;margin-top:-14px;margin-bottom:-14px;
  animation:qa-wave 14s ease-in-out infinite;will-change:transform}
.weave i::after{content:"";position:absolute;inset:0;pointer-events:none;
  opacity:0;animation:qa-shine 14s ease-in-out infinite;animation-delay:inherit}
.weave.silverq i{animation-name:qa-fadewave;width:30px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAB4CAYAAACuNZEIAAAB7ElEQVR42u2bQW+GIAyGlSy7Lvv/P9J4NR52+hJCQCkWaN3z3LYh62tbBM27LAAAAAAAABWsPSb9+fr+Lf1tP4/tFYJTkTlhNWPMC45F7OexXWW3NG521kVi48DTn7WucSvWrWiNgN2I1gzUvOhcQE8DzM3XU3SQXtB7Re09f2jNhEZ2R8xtMqiRgsPyzwitGZhVVcMy3HsxGbXPDhbu/si9dPASqAnBtQeFmnHmBd9l9yPiM+5OeDrf9MeSJIBU7H4eWyx8ZsuEXv84zWx6SHDRw9Isx5mWlKyJw0Mpy7ngYoHxdTnRJXEmngBax8O77Jo5Hkqy/ER0z+yurYHGQeV+VzNPqa+lN7Z7+WuUtvRIWCp1aQs0bTxKm4mW17RPW0qaXbUX8bmNRa7sr8aWSrq21GvEr1olnt710uPqauzVl4uarewwwdJevvru1LoA1Qo2RWt/u/lcoxG8dPxqVbRkwyMp5dVDxt/21gUAAAAAAAAAAAAAAN4C3kMtkXgPE6F4D98o1q1ovId4D9tXd7yHswTjPVzwHroA7+GsxQTvoZXHkqWj3nDBeA8zIvAe4j003MN4Dxe8h48rBe+hMngPR5U23sPGlsJ72Ftw6WiH9/AmeLyHA65zKRrvoUfBkjUB7yEAAAAAAHThD0Up6aJE8DojAAAAAElFTkSuQmCC") 0 0/30px 60px repeat}
.weave.silverq i::after{display:none}
.weave.gridw i{animation-name:qa-wave-grid;width:44px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='44' height='44'><line x1='0' y1='43.5' x2='44' y2='43.5' stroke='%2312181D' stroke-opacity='0.045' stroke-width='1.05'/><line x1='43.5' y1='0' x2='43.5' y2='44' stroke='%2312181D' stroke-opacity='0.045' stroke-width='1.05'/></svg>") 0 0/44px 44px repeat}
.weave.gridw i::after{background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='44' height='44'><line x1='0' y1='43.5' x2='44' y2='43.5' stroke='%23FFFFFF' stroke-opacity='0.9' stroke-width='1.05'/><line x1='43.5' y1='0' x2='43.5' y2='44' stroke='%23FFFFFF' stroke-opacity='0.9' stroke-width='1.05'/></svg>") 0 0/44px 44px repeat}
@keyframes qa-wave{0%,100%{transform:translateY(-6px)}50%{transform:translateY(6px)}}
@keyframes qa-fadewave{0%,100%{transform:translateY(-6px);opacity:0}50%{transform:translateY(6px);opacity:1}}
@keyframes qa-wave-grid{0%,100%{transform:translateY(-11px)}50%{transform:translateY(11px)}}
@keyframes qa-shine{0%,100%{opacity:0}45%,55%{opacity:1}}
@media(prefers-reduced-motion:reduce){.weave i,.weave i::after{animation:none}}

/* hero */
.hero{background:var(--stone);color:var(--ink);border-bottom:1px solid var(--mist);padding:110px 0 96px}
.crumb{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.1em;color:var(--slate);text-decoration:none;display:inline-block;margin-bottom:22px}
.crumb:hover{color:var(--copper)}
.eyebrow{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--copper);margin-bottom:28px}
.hero h1{font-family:'EB Garamond',Garamond,Georgia,serif;font-weight:500;font-size:clamp(34px,5.4vw,58px);line-height:1.14;max-width:17ch;letter-spacing:-.005em}
.hero h1 em{font-style:normal;color:#0A0C0E;background-image:linear-gradient(rgba(0,255,0,.4),rgba(0,255,0,.4));background-repeat:no-repeat;background-position:0 0;background-size:0% 100%;padding:.04em .1em;margin:0 -.02em;border-radius:.06em;-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:hlsweep .55s ease-out .8s forwards}
@keyframes hlsweep{to{background-size:100% 100%}}
.hl{background-image:linear-gradient(rgba(0,255,0,.4),rgba(0,255,0,.4));background-repeat:no-repeat;background-position:0 0;background-size:0% 100%;transition:background-size .5s ease-out .4s;padding:.02em .08em;margin:0 -.02em;border-radius:.05em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.hl.swept{background-size:100% 100%}
.hero .hl{transition-delay:1.05s}
.hero .sub{margin-top:30px;max-width:60ch;font-size:18px;line-height:1.68;color:#46423C}
.hero .cred{margin-top:44px;padding-top:24px;border-top:1px solid #DFDBD1;display:flex;flex-wrap:wrap;gap:12px 40px;font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.04em;color:var(--muted)}
.hero .cred b{color:var(--copper);font-weight:500}
.reveal{opacity:0;transform:translateY(14px);animation:rise .7s ease forwards}
.reveal:nth-child(2){animation-delay:.08s}.reveal:nth-child(3){animation-delay:.16s}.reveal:nth-child(4){animation-delay:.26s}.reveal:nth-child(5){animation-delay:.34s}
@keyframes rise{to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.hl,.hero h1 em{background-size:100% 100%;transition:none;animation:none}.reveal{animation:none;opacity:1;transform:none}html{scroll-behavior:auto}}

/* section chrome */
section{padding:92px 0}
.sec-head{display:flex;align-items:baseline;gap:20px;margin-bottom:52px}
.sec-head .tag{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--copper);white-space:nowrap}
.sec-head .rule{flex:1;height:1px;background:var(--mist)}
h2{font-family:'EB Garamond',Garamond,Georgia,serif;font-weight:500;font-size:clamp(26px,3.4vw,36px);line-height:1.2;margin-bottom:18px}
.lede{max-width:64ch;color:var(--slate);font-size:17.5px}

/* method */
.method{background:var(--stone);border-bottom:1px solid var(--mist)}
.method-grid{display:grid;grid-template-columns:repeat(3,1fr);margin-top:56px;position:relative}
.method-grid::before{content:"";position:absolute;top:23px;left:8%;right:8%;height:1px;background:var(--teal);opacity:.45}
.stage{padding:0 36px 0 0;position:relative}
.stage .dot{width:46px;height:46px;border-radius:50%;background:var(--paper);border:1px solid var(--teal);display:flex;align-items:center;justify-content:center;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--teal);position:relative;z-index:1;margin-bottom:22px}
.stage h3{font-family:'EB Garamond',Garamond,Georgia,serif;font-weight:500;font-size:22px;margin-bottom:10px}
.stage p{font-size:15px;color:#3E464D;line-height:1.65}
.maturity{margin-top:16px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.maturity .arr{color:#C6C0B5}
.grade-wrap{margin-top:72px;padding-top:56px;border-top:1px solid #E0D8CE}
.grade-wrap h3{font-family:'EB Garamond',Garamond,Georgia,serif;font-weight:500;font-size:24px;margin-bottom:10px}
.grade-lede{max-width:62ch;color:var(--slate);font-size:15.5px;margin-bottom:36px}
.grade-list{border-top:1px solid var(--ink)}
.grade{display:grid;grid-template-columns:14px 230px 1fr;gap:26px;align-items:stretch;padding:20px 4px;border-bottom:1px solid var(--mist)}
.grade .bar{border-radius:2px;background:var(--copper)}
.grade.g1 .bar{opacity:.3}.grade.g2 .bar{opacity:.62}.grade.g3 .bar{opacity:1}.grade.g4 .bar{background:#9A928C;opacity:.55}
.grade .gname{font-weight:600;font-size:15.5px;align-self:center}
.grade .gname span{display:block;font-family:'IBM Plex Mono',monospace;font-weight:400;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.grade .gdef{font-size:14.5px;color:var(--slate);line-height:1.6;align-self:center}

/* situations */
.sit-list{margin-top:56px;border-top:1px solid var(--ink)}
.sit{display:grid;grid-template-columns:150px 1.1fr 1.35fr 170px;gap:24px;align-items:baseline;padding:28px 4px;border-bottom:1px solid var(--mist);transition:background .15s}
.sit:hover{background:var(--stone)}
.sit .lever{font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--copper)}
.sit h3{font-family:'EB Garamond',Garamond,Georgia,serif;font-weight:500;font-size:19px;line-height:1.3}
.sit p{font-size:14.5px;color:var(--slate);line-height:1.6}
.sit .proof{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--slate);text-align:right;letter-spacing:.05em;line-height:1.9}
.sit .proof a{color:var(--slate);text-decoration:none;border-bottom:1px dotted var(--copper)}
.sit .proof a:hover{color:var(--copper)}

/* ledger */
.ledger{margin-top:56px;border-top:1px solid var(--ink)}
.row{display:grid;grid-template-columns:150px 1.35fr 1.3fr 180px;gap:24px;align-items:baseline;padding:26px 4px;border-bottom:1px solid var(--mist);transition:background .15s;scroll-margin-top:120px}
.row:hover,.row:target{background:var(--stone)}
.row .code{font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.1em;color:var(--slate);line-height:1.8}
.row .code b{color:var(--copper);font-weight:500;display:block}
.row .client{font-weight:600;font-size:16.5px;letter-spacing:.005em}
.row .client span{display:block;font-weight:400;color:var(--slate);font-size:14.5px;margin-top:3px}
.row .mandate{font-size:14.5px;color:var(--slate);line-height:1.55}
.row .outcome{text-align:right}
.row .outcome .fig{font-family:'EB Garamond',Garamond,Georgia,serif;font-size:clamp(22px,2.6vw,29px);color:var(--copper);line-height:1.1}
.row .outcome .lbl{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);margin-top:5px}
.lbl .lline{display:block;white-space:nowrap;line-height:1.7}
.ledger-note{margin-top:20px;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--slate);letter-spacing:.03em}

/* practice lead */
.principal{background:var(--stone);border-top:1px solid var(--mist);border-bottom:1px solid var(--mist)}
.principal-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:72px;align-items:start}
.principal-left h2{margin-bottom:8px}
.principal-left .role{font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--copper);margin-bottom:28px}
.portrait{float:right;width:210px;aspect-ratio:4/5;max-width:100%;border-radius:6px;border:1px solid var(--mist);border-bottom:3px solid var(--copper);margin:6px 0 18px 28px;background:#ECE8E0;display:flex;align-items:center;justify-content:center;font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted);text-align:center;padding:12px}
.fact-list{list-style:none;border-top:1px solid var(--ink)}
.fact-list li{display:flex;justify-content:space-between;gap:20px;padding:13px 2px;border-bottom:1px solid var(--mist);font-size:14.5px}
.fact-list .k{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.06em;color:var(--slate);text-transform:uppercase;padding-top:2px}
.fact-list .v{text-align:right;max-width:62%}
.principal-right p{margin-bottom:20px;color:#2A3138;font-size:16.5px}
.principal-right p:last-child{margin-bottom:0}

/* working together */
.together-box{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:center}
.together-box p{color:var(--slate);font-size:16px;max-width:56ch}
.other-practice{display:block;text-decoration:none;color:#fff;background:var(--other);padding:34px 36px;border-radius:3px;transition:transform .2s}
.other-practice:hover{transform:translateY(-2px)}
.other-practice .op-tag{font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;opacity:.8}
.other-practice .op-name{font-family:'EB Garamond',Garamond,Georgia,serif;font-size:34px;line-height:1.1;margin:10px 0 8px;color:#fff}
.other-practice .op-line{font-size:15px;opacity:.88}
.other-practice .op-go{margin-top:18px;font-weight:600;font-size:14px}

/* sectors */
.sectors{padding:56px 0}
.sector-strip{display:flex;flex-wrap:wrap;gap:10px 14px;margin-top:26px}
.sector-strip span{font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.05em;color:var(--slate);border:1px solid var(--mist);border-radius:3px;padding:8px 14px;background:#fff}

/* contact */
.contact{background:var(--stone);color:var(--ink);border-top:1px solid var(--mist);padding:96px 0}
.contact h2{max-width:26ch}
.contact .lede{color:#46423C;max-width:58ch}
.contact-lines{margin-top:44px;display:flex;flex-wrap:wrap;gap:16px 56px;font-family:'IBM Plex Mono',monospace;font-size:14px;letter-spacing:.03em}
.contact-lines a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--copper);padding-bottom:2px}
.contact-lines a:hover{color:var(--copper)}
.contact-lines .lbl{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;margin-bottom:8px}

/* scroll reveal (only applied by script when motion is allowed) */
.io{opacity:0;transform:translateY(16px);transition:opacity .55s ease,transform .55s ease}
.io.in{opacity:1;transform:none}

@media(max-width:860px){
  .method-grid{grid-template-columns:1fr;gap:36px}.method-grid::before{display:none}.stage{padding-right:0}
  .grade{grid-template-columns:10px 1fr}.grade .gdef{grid-column:2}
  .sit{grid-template-columns:1fr;gap:8px;padding:24px 2px}.sit .proof{text-align:left}
  .row{grid-template-columns:1fr 130px;grid-template-areas:"code code" "client outcome" "mandate outcome"}
  .row .code{grid-area:code}.row .code b{display:inline;margin-right:10px}.row .client{grid-area:client}.row .mandate{grid-area:mandate;margin-top:6px}.row .outcome{grid-area:outcome;align-self:center}
  .lbl .lline{white-space:normal}
  .principal-grid{grid-template-columns:1fr;gap:44px}
  .portrait{float:none;display:flex;width:200px;margin:0 0 22px}
  .together-box{grid-template-columns:1fr;gap:28px}
}
@media(max-width:760px){
  body{font-size:16px}section{padding:60px 0}.hero{padding:72px 0 60px}.hero .cred{gap:10px 28px}
  .sec-head{margin-bottom:36px}.grade-wrap{margin-top:52px;padding-top:40px}.contact{padding:64px 0}.wrap{padding:0 20px}
}
.row .code b{text-transform:uppercase;letter-spacing:.12em}
.sit .proof a{white-space:nowrap}

/* partners page */
.fin-scope{--teal:var(--fin);--copper:var(--fin)}
.partner-links{display:flex;flex-wrap:wrap;gap:10px 28px;font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.03em;margin-top:8px}
.partner-links a{color:var(--copper);text-decoration:none;border-bottom:1px dotted var(--copper)}
.sit .proof:empty{display:none}
