/* buttons: square, like everything in the Ledger system */
.btn{display:inline-flex;align-items:center;gap:var(--sp-2);font:inherit;font-weight:600;font-size:var(--fs-sm);padding:.8rem 1.25rem;border:1px solid transparent;border-radius:0;cursor:pointer;line-height:1;white-space:nowrap;
  transition:background-color .18s var(--ease-out),border-color .18s var(--ease-out),color .18s var(--ease-out)}
.btn--primary{background:var(--blue);color:#fff} .btn--primary:hover{background:var(--blue-strong);color:#fff}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--ink)} .btn--ghost:hover{background:var(--ink);color:#fff}
.btn--sun{background:var(--sun);color:var(--navy)} .btn--sun:hover{background:#fff;color:var(--navy)}
.btn--onnavy{background:transparent;color:#fff;border-color:var(--on-navy-muted)} .btn--onnavy:hover{border-color:#fff;color:#fff}
.btn--lg{padding:1rem 1.5rem;font-size:1rem}
.btn-row{display:flex;gap:var(--sp-3);flex-wrap:wrap;align-items:center}
.link{font-weight:600;display:inline-flex;align-items:center;gap:.35rem}
.link::after{content:"\2192";transition:transform .18s var(--ease-out)} .link:hover::after{transform:translateX(3px)}

/* header */
.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:saturate(140%) blur(12px);-webkit-backdrop-filter:saturate(140%) blur(12px);border-bottom:1px solid transparent;transition:border-color .2s}
.site-header.is-scrolled{border-bottom-color:var(--rule)}
.nav{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;height:var(--header-h);gap:var(--sp-6)}
.nav__logo{display:inline-flex;align-items:center;gap:.55rem;color:var(--ink);font-family:var(--font-display);font-weight:800;font-stretch:112%;font-size:1.3rem;letter-spacing:-.02em;justify-self:start}
.nav__logo:hover{color:var(--ink)} .nav__logo img{height:28px;width:auto}
.nav__links{display:flex;gap:var(--sp-1);align-items:center;justify-self:center}
.nav__link{display:inline-flex;align-items:center;gap:.3rem;color:var(--ink);font-weight:500;font-size:var(--fs-sm);padding:.5rem .7rem;background:none;border:0;cursor:pointer;font-family:inherit;line-height:1.2}
.nav__link:hover,.dropdown.is-open>.nav__link{background:var(--sky);color:var(--ink)}
.nav__link svg{width:14px;height:14px;opacity:.55}
.nav__cta{display:flex;gap:var(--sp-2);align-items:center;justify-self:end}
.dropdown{position:relative}
.dropdown__menu{position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%);min-width:340px;background:var(--paper);border:1px solid var(--rule-strong);box-shadow:var(--shadow-frame);padding:var(--sp-2);display:none}
.dropdown.is-open .dropdown__menu{display:grid;gap:2px}
.dropdown__item{display:grid;gap:.1rem;padding:.65rem .8rem;color:inherit}
.dropdown__item:hover{background:var(--sky-50)} .dropdown__item b{font-size:var(--fs-sm)} .dropdown__item span{color:var(--text-muted);font-size:.85rem}
.dropdown__item .verb{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;color:var(--blue)}
.nav__toggle,.nav__close{display:none;background:none;border:0;cursor:pointer;color:var(--ink);padding:.4rem}
.nav__toggle svg,.nav__close svg{width:22px;height:22px}
.nav__drawer{display:none}
@media (max-width:1020px){
  .nav{grid-template-columns:auto 1fr auto}
  .nav__links{display:none}
  .nav__cta{justify-self:end} .nav__cta .btn{padding:.6rem .9rem;font-size:.88rem}
  .nav__toggle{display:inline-flex}
  .nav__drawer{position:fixed;inset:0;background:var(--paper);padding:var(--sp-6);overflow:auto;display:none;flex-direction:column;gap:var(--sp-2);z-index:200}
  .nav__drawer.is-open{display:flex}
  .nav__drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4)}
  .nav__close{display:inline-flex}
  .nav__drawer-nav{display:flex;flex-direction:column;gap:var(--sp-6)}
  .nav__drawer-group{display:flex;flex-direction:column}
  .nav__drawer-title{margin:0 0 var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
  .nav__drawer-group a{padding:var(--sp-2) 0;color:var(--ink);font-family:var(--font-display);font-weight:700;font-stretch:108%;font-size:1.4rem;line-height:1.2}
}
@media (max-width:420px){.nav__cta .btn{display:none}}

/* hero */
.hero{padding-block:var(--sp-16) var(--sp-24)}
.hero__grid{display:grid;grid-template-columns:minmax(0,12fr) minmax(0,10fr);gap:var(--sp-12);align-items:center}
.hero__copy h1{margin-bottom:var(--sp-6)}
.hero__copy .lede{margin-bottom:var(--sp-8)}
.hero__media{min-width:0}
.hero--page{padding-block:var(--sp-16);border-bottom:1px solid var(--rule)}
.hero--page h1{font-size:clamp(2.2rem,1.4rem + 3.4vw,3.9rem);max-width:17em}
.hero--page .lede{margin-bottom:var(--sp-8)} .hero--page .lede:last-child{margin-bottom:0}
@media (max-width:980px){.hero__grid{grid-template-columns:minmax(0,1fr)}.hero{padding-block:var(--sp-12) var(--sp-16)}}
.crumbs{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0 0 var(--sp-6)}
.crumbs a{color:var(--text-muted)} .crumbs a:hover{color:var(--blue)}

/* advise / build / run */
.abr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--rule-strong);border:1px solid var(--rule-strong)}
.abr__panel{background:var(--paper);padding:var(--sp-8) var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}
.abr__panel .kicker{margin:0}
.abr__verb{font-family:var(--font-display);font-weight:800;font-stretch:115%;font-size:clamp(2rem,1.6rem + 1.6vw,2.7rem);line-height:1;color:var(--ink);margin:0}
.abr__q{font-style:italic;color:var(--text-muted);margin:0}
.abr__panel .link{margin-top:auto;padding-top:var(--sp-3)}
.ticks{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.ticks li{position:relative;padding-left:1.1rem}
.ticks li::before{content:"";position:absolute;left:0;top:.74em;width:.55rem;height:2px;background:var(--blue)}
.section--navy .ticks li::before{background:var(--sun)}
@media (max-width:900px){.abr{grid-template-columns:minmax(0,1fr)}}

/* ledger: the brand's comparison table */
.ledger{overflow-x:auto}
.ledger table{border-collapse:collapse;width:100%;min-width:620px;font-size:var(--fs-sm)}
.ledger th,.ledger td{text-align:left;vertical-align:top;padding:.85rem 1rem .85rem 0;border-bottom:1px solid var(--rule)}
.ledger th{font-family:var(--font-mono);font-size:.7rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap}
.ledger tbody th{font-family:var(--font-sans);font-size:var(--fs-sm);font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink);white-space:normal}
.ledger thead tr{border-bottom:2px solid var(--ink)}
.status{font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;padding:.15rem .45rem}
.status--match{color:var(--match);background:var(--match-soft)}
.status--break{color:var(--break);background:var(--break-soft)}
.status--open{color:var(--text-muted);background:var(--sky)}

/* cards and rows */
.card{border-top:2px solid var(--ink);padding-top:var(--sp-4);min-width:0}
.card h3{margin-bottom:var(--sp-2)} .card p:last-child{margin-bottom:0}
.card--box{border:1px solid var(--rule-strong);border-top:2px solid var(--ink);padding:var(--sp-6);background:var(--paper);display:flex;flex-direction:column;gap:var(--sp-2)}
.card--box p{margin:0} .card--box .link{margin-top:auto;padding-top:var(--sp-3)}
a.card--box{color:inherit;transition:border-color .18s var(--ease-out)} a.card--box:hover{border-color:var(--blue)} a.card--box:hover h3{color:var(--blue)}
.section--navy .card{border-top-color:var(--sun)}
.rows{border-top:2px solid var(--ink)}
.row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) auto;gap:var(--sp-6);align-items:baseline;padding:var(--sp-6) 0;border-bottom:1px solid var(--rule);color:inherit}
.row h3{margin:0} .row p{margin:0;max-width:56ch}
.row__link{font-weight:600;color:var(--blue);white-space:nowrap}
a.row:hover h3{color:var(--blue)}
@media (max-width:760px){.row{grid-template-columns:minmax(0,1fr);gap:var(--sp-2)}}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-12);align-items:start}
.split>*{min-width:0}
.split--center{align-items:center}
@media (max-width:860px){.split{grid-template-columns:minmax(0,1fr);gap:var(--sp-8)}}
.tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.tags li{font-family:var(--font-mono);font-size:.78rem;padding:.3rem .6rem;border:1px solid var(--rule-strong);background:var(--paper);color:var(--text)}

/* steps: only for real sequences */
.steps{list-style:none;margin:0;padding:0;counter-reset:step;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1px;background:var(--rule-strong);border:1px solid var(--rule-strong)}
.steps li{counter-increment:step;background:var(--paper);padding:var(--sp-6);min-width:0}
.steps li::before{content:counter(step,decimal-leading-zero);display:block;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--blue);margin-bottom:var(--sp-2)}
.steps h3{font-size:1.1rem;margin-bottom:var(--sp-2)} .steps p{margin:0;font-size:var(--fs-sm)}

/* frame: illustrative product scene */
.frame{background:var(--paper);border:1px solid var(--rule-strong);box-shadow:var(--shadow-frame);min-width:0}
.frame__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:.6rem var(--sp-4);border-bottom:1px solid var(--rule);background:var(--sky-50);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.frame__bar b{color:var(--ink);font-weight:500}
.frame__body{padding:var(--sp-4)}
.frame__note{margin:var(--sp-2) 0 0;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.lrows{font-family:var(--font-mono);font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--ink)}
.lrow{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) auto;gap:var(--sp-3);align-items:center;padding:.55rem 0;border-bottom:1px solid var(--rule)}
.lrow:last-child{border-bottom:0}
.lrow span:nth-child(2){text-align:right}
.lrow--head{font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);border-bottom:2px solid var(--ink)}
.lrow small{display:block;font-size:.7rem;color:var(--text-muted)}
.meter{height:10px;background:var(--sky);position:relative}
.meter i{position:absolute;inset:0 auto 0 0;background:var(--blue)}
.meter i.is-sun{background:var(--sun)}
.kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4);margin-bottom:var(--sp-4)}
.kv div{min-width:0} .kv dt{font-family:var(--font-mono);font-size:.64rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
.kv dd{margin:0;font-family:var(--font-display);font-weight:750;font-stretch:108%;font-size:1.35rem;color:var(--ink);font-variant-numeric:tabular-nums}
dl.kv{margin-top:0}

/* quote */
.quote{max-width:54rem}
.quote blockquote{font-family:var(--font-display);font-weight:650;font-stretch:104%;font-size:var(--fs-statement);line-height:1.28;color:var(--ink);text-wrap:pretty}
.quote blockquote p{margin:0}
.quote figcaption{margin-top:var(--sp-6);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
.section--navy .quote blockquote{color:var(--on-navy)} .section--navy .quote figcaption{color:var(--on-navy-muted)}
.statement{font-family:var(--font-display);font-weight:700;font-stretch:106%;font-size:var(--fs-statement);line-height:1.25;color:var(--ink);max-width:32em;text-wrap:balance;margin:0}
.section--navy .statement{color:var(--on-navy)}
.statement mark{background:none;color:var(--sun)}

/* call to action band */
.cta{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--sp-8);align-items:end}
.cta h2{margin-bottom:var(--sp-3)} .cta p{margin:0;max-width:52ch}
.cta .btn-row{justify-content:flex-end}
@media (max-width:860px){.cta{grid-template-columns:minmax(0,1fr)}.cta .btn-row{justify-content:flex-start}}

/* insights */
.posts{border-top:2px solid var(--ink)}
.post{display:grid;grid-template-columns:minmax(0,10rem) minmax(0,1fr);gap:var(--sp-6);padding:var(--sp-6) 0;border-bottom:1px solid var(--rule);color:inherit}
.post h3{margin-bottom:var(--sp-2)} .post p{margin:0;max-width:60ch}
a.post:hover h3{color:var(--blue)}
@media (max-width:620px){.post{grid-template-columns:minmax(0,1fr);gap:var(--sp-2)}}

/* contact facts + forms */
.facts{margin:0;display:grid;gap:var(--sp-6)}
.facts dt{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-1)}
.facts dd{margin:0;color:var(--ink);font-weight:500}
.field{display:grid;gap:.4rem;margin-bottom:var(--sp-4)}
.field label{font-weight:600;color:var(--ink);font-size:.92rem}
.field input,.field select,.field textarea{font:inherit;padding:.7rem .8rem;border:1px solid var(--rule-strong);border-radius:0;background:var(--paper);color:var(--ink);width:100%}
.field textarea{min-height:8rem;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.field--error input,.field--error textarea{border-color:var(--break)}
.field__error{color:var(--break);font-size:.82rem;min-height:1em}
.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4)}
@media (max-width:620px){.field-row{grid-template-columns:minmax(0,1fr);gap:0}}
.form-status{padding:var(--sp-4);font-weight:500;margin-top:var(--sp-4)}
.form-status--ok{background:var(--match-soft);color:var(--match)}
.form-status--err{background:var(--break-soft);color:var(--break)}
.form-status[hidden]{display:none}
.hp{position:absolute;left:-9999px}

/* footer */
.site-footer{background:var(--navy);color:var(--on-navy-muted);padding-block:var(--sp-16) var(--sp-8)}
.site-footer a{color:var(--on-navy-muted)} .site-footer a:hover{color:#fff}
.site-footer .nav__logo{color:#fff}
.footer-grid{display:grid;grid-template-columns:1.5fr repeat(4,minmax(0,1fr));gap:var(--sp-8)}
@media (max-width:900px){.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.footer-tag{font-family:var(--font-display);font-weight:700;font-stretch:106%;font-size:1.2rem;color:#fff;max-width:18ch;line-height:1.25;margin:var(--sp-4) 0}
.footer-addr{font-size:var(--fs-sm);font-style:normal;line-height:1.6}
.footer-col h4{font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:#fff;margin-bottom:var(--sp-3)}
.footer-col a{display:block;padding:.3rem 0;font-size:var(--fs-sm)}
.footer-bottom{border-top:1px solid var(--navy-rule);margin-top:var(--sp-12);padding-top:var(--sp-6);font-size:.85rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-3) var(--sp-6)}
.footer-legal{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-6)}

/* reveal: product frames only */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease-out),transform .6s var(--ease-out)}
.reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.btn,.link::after{transition:none}}

/* rows and posts whose title is an h2 (index pages) */
.row h2,.post h2{font-size:clamp(1.35rem,1.15rem + .9vw,1.8rem);margin:0}
.post h2{margin-bottom:var(--sp-2)} .post div>h2:last-child{margin-bottom:0}
.row .kicker{margin-bottom:var(--sp-1)}
a.row:hover h2,a.post:hover h2{color:var(--blue)}
/* product heroes carry longer headlines than the home page */
.hero__copy:has(.crumbs) h1{font-size:clamp(2.2rem,1.4rem + 3vw,3.6rem)}

/* ===== Enterprise credibility pass: editorial layouts, workflows, case studies, placeholders ===== */
.section{padding-block:clamp(4rem,3rem + 5vw,7.5rem)}
.head h2,.ed__aside h2{max-width:18em}
.head--split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-12);align-items:end}
.head--split>*{margin:0;min-width:0}
@media (max-width:860px){.head--split{grid-template-columns:minmax(0,1fr);gap:var(--sp-4)}}

/* editorial: a fixed side heading beside a long body */
.ed{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:var(--sp-12) var(--sp-16)}
.ed>*{min-width:0}
.ed__aside{position:sticky;top:calc(var(--header-h) + var(--sp-8));align-self:start}
.ed__aside h2{font-size:clamp(1.7rem,1.3rem + 1.6vw,2.4rem)}
.ed__aside p:last-child{margin-bottom:0}
.ed__body>p{font-size:var(--fs-lede);line-height:1.55;max-width:var(--measure)}
.ed__body>:last-child{margin-bottom:0}
@media (max-width:900px){.ed{grid-template-columns:minmax(0,1fr);gap:var(--sp-8)}.ed__aside{position:static}}

/* specification list: term left, explanation right */
.spec{margin:0;border-top:2px solid var(--ink)}
.spec>div{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,9fr);gap:var(--sp-2) var(--sp-8);padding:var(--sp-6) 0;border-bottom:1px solid var(--rule)}
.spec dt{font-family:var(--font-display);font-weight:700;font-stretch:105%;font-size:1.15rem;line-height:1.25;color:var(--ink)}
.spec dd{margin:0;max-width:60ch}
.spec dd>:last-child{margin-bottom:0}
.spec dd ul{margin:var(--sp-2) 0 0;padding-left:1.1rem} .spec dd li{margin-bottom:.2rem}
.section--navy .spec{border-top-color:var(--sun)} .section--navy .spec>div{border-bottom-color:var(--navy-rule)} .section--navy .spec dt{color:#fff}
@media (max-width:680px){.spec>div{grid-template-columns:minmax(0,1fr)}}

/* credibility strip */
.strip{margin:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:2px solid var(--ink);border-bottom:1px solid var(--rule)}
.strip>div{padding:var(--sp-6);border-left:1px solid var(--rule);min-width:0}
.strip>div:first-child{padding-left:0;border-left:0}
.strip dt{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-2)}
.strip dd{margin:0;font-family:var(--font-display);font-weight:700;font-stretch:105%;font-size:1.15rem;line-height:1.25;color:var(--ink)}
.strip__note{margin:var(--sp-4) 0 0;font-size:var(--fs-sm);color:var(--text-muted)}
@media (max-width:900px){.strip{grid-template-columns:repeat(2,minmax(0,1fr))}.strip>div{padding-left:0;border-left:0;border-top:1px solid var(--rule)}.strip>div:nth-child(-n+2){border-top:0}.strip>div:nth-child(even){padding-left:var(--sp-6);border-left:1px solid var(--rule)}}
@media (max-width:520px){.strip{grid-template-columns:minmax(0,1fr)}.strip>div,.strip>div:nth-child(even){padding-left:0;border-left:0;border-top:1px solid var(--rule)}.strip>div:first-child{border-top:0}}

/* workflow: connected stages */
.flow{list-style:none;margin:0;padding:0;display:flex;gap:var(--sp-8);counter-reset:stage}
.flow__stage{flex:1 1 0;min-width:0;position:relative;counter-increment:stage;background:var(--paper);border:1px solid var(--rule-strong);border-top:3px solid var(--blue);padding:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-2)}
.flow__stage::before{content:counter(stage,decimal-leading-zero);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--blue)}
.flow__stage:not(:last-child)::after{content:"";position:absolute;top:50%;right:calc(-1 * var(--sp-8));width:var(--sp-8);height:10px;transform:translateY(-50%);
  background:linear-gradient(var(--ink),var(--ink)) left center/calc(100% - 7px) 2px no-repeat,
  conic-gradient(from 240deg at 100% 50%,var(--ink) 60deg,transparent 0) right center/8px 10px no-repeat}
.flow__stage h3{margin:0;font-size:1.2rem}
.flow__stage p{margin:0;font-size:var(--fs-sm)}
.flow__verb{font-family:var(--font-display);font-weight:800;font-stretch:115%;font-size:clamp(1.7rem,1.4rem + 1.2vw,2.3rem);line-height:1;color:var(--ink);margin:0}
.flow__out{margin-top:auto;padding-top:var(--sp-3);border-top:1px solid var(--rule);font-family:var(--font-mono);font-size:.74rem;line-height:1.5;color:var(--text-muted)}
.flow__out b{display:block;font-weight:500;letter-spacing:.09em;text-transform:uppercase;font-size:.66rem;color:var(--text-muted)}
.flow__loop{margin:var(--sp-4) 0 0;padding:var(--sp-3) var(--sp-4);border:1px dashed var(--rule-strong);border-top:0;font-family:var(--font-mono);font-size:.78rem;color:var(--text-muted);text-align:center}
@media (max-width:900px){.flow{flex-direction:column;gap:var(--sp-6)}
  .flow__stage:not(:last-child)::after{top:auto;bottom:calc(-1 * var(--sp-6));right:auto;left:var(--sp-6);width:10px;height:var(--sp-6);transform:none;
  background:linear-gradient(var(--ink),var(--ink)) center top/2px calc(100% - 7px) no-repeat,
  conic-gradient(from -30deg at 50% 100%,var(--ink) 60deg,transparent 0) center bottom/10px 8px no-repeat}}

/* featured case study */
.feature{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--sp-12) var(--sp-16);align-items:start}
.feature>*{min-width:0}
.feature h2{margin-bottom:var(--sp-3)}
.feature__client{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.09em;text-transform:uppercase;color:var(--on-navy-muted);margin-bottom:var(--sp-8)}
.feature .quote blockquote{font-size:clamp(1.15rem,1rem + .7vw,1.45rem)}
.feature__side{display:grid;gap:var(--sp-8)}
.outcomes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4)}
@media (max-width:900px){.feature{grid-template-columns:minmax(0,1fr)}}
@media (max-width:480px){.outcomes{grid-template-columns:minmax(0,1fr)}}

/* advisory areas: title, the questions, the deliverables */
.areas{border-top:2px solid var(--ink)}
.area{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,4fr) minmax(0,4fr);gap:var(--sp-6) var(--sp-12);padding:var(--sp-8) 0;border-bottom:1px solid var(--rule)}
.area>*{min-width:0}
.area h3{font-size:clamp(1.3rem,1.15rem + .7vw,1.65rem);margin-bottom:var(--sp-3)}
.area p{margin:0}
.area h4{font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-3)}
@media (max-width:900px){.area{grid-template-columns:minmax(0,1fr)}}

/* placeholders: content that needs verified information before launch */
.ph{border:1.5px dashed var(--break);background:var(--break-soft);color:var(--ink);padding:var(--sp-4);font-size:var(--fs-sm);min-width:0}
.ph p{margin:0}
.ph__tag{font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--break);margin-bottom:var(--sp-1) !important}
.ph--media{display:flex;flex-direction:column;justify-content:flex-end;aspect-ratio:16/10}
.ph--portrait{aspect-ratio:4/5}
.section--navy .ph{background:transparent;border-color:var(--sun);color:var(--on-navy)} .section--navy .ph__tag{color:var(--sun)}
.people{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-8)}
.person{display:grid;gap:var(--sp-3);align-content:start;min-width:0}
.person h3{margin:0} .person p{margin:0;font-size:var(--fs-sm)}
.person__role{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
@media (max-width:900px){.people{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.people{grid-template-columns:minmax(0,1fr)}}
.timeline{list-style:none;margin:var(--sp-8) 0 0;padding:0 0 0 var(--sp-6);border-left:2px solid var(--ink);display:grid;gap:var(--sp-6)}
.timeline li{position:relative}
.timeline li::before{content:"";position:absolute;left:calc(-1 * var(--sp-6) - 6px);top:.45em;width:10px;height:10px;background:var(--blue)}
.timeline b{display:block;font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
.idlist{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--sp-12);border-top:2px solid var(--ink)}
.idlist>div{padding:var(--sp-4) 0;border-bottom:1px solid var(--rule);min-width:0}
.idlist dt{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-1)}
.idlist dd{margin:0;color:var(--ink);font-weight:500}
@media (max-width:680px){.idlist{grid-template-columns:minmax(0,1fr)}}
.ledger td a,.ledger th a{font-weight:600}
.flow__stage .flow__verb{font-size:clamp(1.7rem,1.4rem + 1.2vw,2.3rem)}
/* fixed tracks so the middle column lines up from row to row */
.row{grid-template-columns:minmax(0,4fr) minmax(0,7fr) minmax(0,3fr)}
.row__link{text-align:right;white-space:normal}
@media (max-width:760px){.row{grid-template-columns:minmax(0,1fr)}.row__link{text-align:left}}

/* exception workflow: one readable, sanitized example in the home hero */
.exc__steps{list-style:none;margin:0;padding:var(--sp-4) var(--sp-6) var(--sp-2)}
.exc__steps li{display:grid;grid-template-columns:6.2rem minmax(0,1fr);gap:var(--sp-4);padding-bottom:var(--sp-4);position:relative}
.exc__steps li>div{border-left:2px solid var(--rule-strong);padding-left:var(--sp-4);position:relative}
.exc__steps li>div::before{content:"";position:absolute;left:-6px;top:.4rem;width:10px;height:10px;background:var(--blue)}
.exc__steps li:last-child>div{border-left-color:transparent}
.exc__when{font-family:var(--font-mono);font-size:.74rem;color:var(--text-muted);padding-top:.2rem;white-space:nowrap}
.exc__title{font-family:var(--font-display);font-weight:700;font-stretch:105%;font-size:1.08rem;letter-spacing:0;line-height:1.3;margin:0 0 .2rem;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
.exc__steps p{margin:0;font-size:.95rem;line-height:1.5;color:var(--text)}
@media (max-width:480px){.exc__steps{padding-inline:var(--sp-4)}.exc__steps li{grid-template-columns:minmax(0,1fr);gap:var(--sp-1)}.exc__steps li>div{margin-left:5px}}
/* verified scope figures in the case study */
.scope{margin:0;display:grid;gap:0;border-top:1px solid var(--navy-rule)}
.scope>div{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:var(--sp-4);align-items:baseline;padding:var(--sp-4) 0;border-bottom:1px solid var(--navy-rule)}
.scope dt{font-family:var(--font-display);font-weight:800;font-stretch:112%;font-size:2rem;line-height:1;color:var(--sun)}
.scope dd{margin:0;color:var(--on-navy)}

/* iubenda consent banner: compact, so the hero and forms stay usable.
   Only type size, padding and button layout change. The wording, links and both choices are iubenda's own.
   Do NOT cap the height of the notice or make it scroll: iubenda then treats the banner as scrollable
   and it no longer closes when the visitor accepts (caught by npm run e2e).
   The repeated id raises specificity above iubenda's own injected rules. */
#iubenda-cs-banner#iubenda-cs-banner#iubenda-cs-banner .iubenda-banner-content{padding:10px 14px 6px !important}
#iubenda-cs-banner#iubenda-cs-banner#iubenda-cs-banner #iubenda-cs-paragraph,#iubenda-cs-banner#iubenda-cs-banner#iubenda-cs-banner .iub-p{font-size:11.5px !important;line-height:1.4 !important;margin:0 !important}
#iubenda-cs-banner#iubenda-cs-banner#iubenda-cs-banner .iubenda-cs-opt-group{display:flex !important;flex-direction:row !important;flex-wrap:nowrap !important;align-items:stretch !important;gap:8px !important;margin:0 !important;padding:4px 14px 12px !important;height:auto !important}
#iubenda-cs-banner#iubenda-cs-banner#iubenda-cs-banner .iubenda-cs-opt-group>div{display:block !important;flex:1 1 50% !important;width:auto !important;min-width:0 !important;height:auto !important;margin:0 !important}
#iubenda-cs-banner#iubenda-cs-banner#iubenda-cs-banner .iubenda-cs-opt-group button{display:block !important;width:100% !important;min-height:32px !important;margin:0 !important;padding:7px 8px !important;font-size:12px !important;line-height:1.2 !important;white-space:nowrap !important}
@media (min-width:641px){#iubenda-cs-banner#iubenda-cs-banner#iubenda-cs-banner.iubenda-cs-default-floating .iubenda-cs-container{max-width:420px !important}}

/* ===== Positioning and launch pass ===== */
/* flagship case, summary form: the result is the thing to scan */
.case h2{max-width:20em;margin-bottom:var(--sp-3)}
.case__result{margin:0 0 var(--sp-12);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--navy-rule);border:1px solid var(--navy-rule)}
.case__result>div{background:var(--navy);padding:var(--sp-6);min-width:0}
.case__result dt,.glance dt{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.09em;text-transform:uppercase;color:var(--on-navy-muted);margin-bottom:var(--sp-2)}
.case__result dd{margin:0;font-family:var(--font-display);font-weight:700;font-stretch:105%;font-size:clamp(1.15rem,1rem + .6vw,1.4rem);line-height:1.25;color:#fff}
.case__result .is-result{background:var(--sun)} .case__result .is-result dt{color:var(--navy)} .case__result .is-result dd{color:var(--navy)}
.case__foot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-8);align-items:end}
.case__foot .quote blockquote{font-size:clamp(1.1rem,1rem + .5vw,1.35rem);font-weight:600}
@media (max-width:860px){.case__result{grid-template-columns:minmax(0,1fr)}.case__foot{grid-template-columns:minmax(0,1fr)}}
/* case study page */
.casehero{background:var(--navy);color:var(--on-navy-muted);padding-block:var(--sp-16)}
.casehero h1{color:#fff;font-size:clamp(2.1rem,1.4rem + 3vw,3.5rem)}
.casehero .lede{color:var(--on-navy)} .casehero .crumbs{color:var(--on-navy-muted)}
.casehero__grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--sp-12);align-items:start}
.casehero__grid>*{min-width:0}
.glance{margin:0;border-top:2px solid var(--sun)}
.glance>div{padding:var(--sp-4) 0;border-bottom:1px solid var(--navy-rule)}
.glance dd{margin:0;color:#fff;font-weight:500}
.glance .is-result{background:var(--sun);padding-inline:var(--sp-4);border-bottom:0} .glance .is-result dt{color:var(--navy)} .glance .is-result dd{color:var(--navy);font-family:var(--font-display);font-weight:700;font-size:1.15rem;line-height:1.25}
@media (max-width:900px){.casehero__grid{grid-template-columns:minmax(0,1fr)}}
/* why dacumen: claim beside its evidence */
.reasons{border-top:2px solid var(--ink)}
.reason{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--sp-6) var(--sp-12);padding:var(--sp-8) 0;border-bottom:1px solid var(--rule)}
.reason>*{min-width:0}
.reason h3{font-size:clamp(1.3rem,1.15rem + .7vw,1.65rem)} .reason p{margin:0;max-width:60ch}
.reason__ev h4{font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-3)}
@media (max-width:860px){.reason{grid-template-columns:minmax(0,1fr)}}
.btn-row .link{margin-left:var(--sp-2)}
.footer-link{background:none;border:0;padding:0;font:inherit;font-size:.85rem;color:var(--on-navy-muted);cursor:pointer;text-align:left}
.footer-link:hover{color:#fff}
main:focus{outline:none}
/* small text: nothing below 11.5px */
.frame__bar,.status{font-size:.75rem}
.lrow--head{font-size:.72rem} .lrow small{font-size:.74rem} .flow__out b{font-size:.72rem} .flow__out{font-size:.78rem}
.ledger th{font-size:.72rem} .ph__tag{font-size:.72rem} .dropdown__item .verb{font-size:.72rem} .frame__note{font-size:.72rem} .kv dt{font-size:.72rem}
/* tables on phones: each row becomes a labelled block, no sideways scrolling */
@media (max-width:640px){
  .ledger{overflow:visible}
  .ledger table{min-width:0;display:block}
  .ledger thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .ledger tbody{display:block;border-top:2px solid var(--ink)}
  .ledger tr{display:block;padding:var(--sp-4) 0;border-bottom:1px solid var(--rule)}
  .ledger tbody th,.ledger td{display:block;border:0;padding:0}
  .ledger tbody th{font-family:var(--font-display);font-weight:700;font-size:1.1rem;margin-bottom:var(--sp-2)}
  .ledger td{padding:.3rem 0}
  .ledger td::before{content:attr(data-label);display:block;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
}

/* ===== Visual design pass: composition, hierarchy and the firm's distinctive figures ===== */
:root{--fs-label:.78rem;--fs-caption:.8125rem;--maxw-narrow:900px}
.container--narrow{max-width:var(--maxw-narrow)}
.caption{margin:var(--sp-3) 0 0;font-size:var(--fs-caption);line-height:1.45;color:var(--text-muted);max-width:60ch}
/* links inside running text are underlined, so they do not depend on color alone */
:is(.ed__body,.ed__aside,.spec,.prose,.strip__note,.measure,.caption) a:not(.btn):not(.link){text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}

/* home hero: headline and copy above a full-width operational figure */
.hero--home{padding-block:var(--sp-16)}
.hero__top{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--sp-8) var(--sp-12);align-items:end;margin-bottom:var(--sp-12)}
.hero__top>*{min-width:0}
.hero__top .hero__copy{grid-column:1/-1}
.hero__top h1{margin:0;max-width:13em}
.hero__top .lede{margin:0}
.hero__top .btn-row{justify-content:flex-end}
@media (max-width:980px){.hero__top .btn-row{justify-content:flex-start}}
@media (max-width:980px){.hero--home{padding-block:var(--sp-12)}.hero__top{grid-template-columns:minmax(0,1fr);margin-bottom:var(--sp-8)}}

/* pipeline: one break followed from incoming data to an approved output */
.pipe{border:1px solid var(--rule-strong);background:var(--paper);box-shadow:var(--shadow-frame);min-width:0}
.pipe.reveal{opacity:1;transform:none}
.pipe__stages{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));counter-reset:pipe}
.pipe__stage{position:relative;counter-increment:pipe;padding:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-3);min-width:0;border-left:1px solid var(--rule)}
.pipe__stage:first-child{border-left:0}
.pipe__stage+.pipe__stage::before{content:"";position:absolute;z-index:1;left:-12px;top:calc(var(--sp-6) - 3px);width:23px;height:23px;background:var(--paper);border:1px solid var(--rule-strong)}
.pipe__stage+.pipe__stage::after{content:"";position:absolute;z-index:2;left:-6px;top:calc(var(--sp-6) + 5px);width:7px;height:7px;border-top:2px solid var(--blue);border-right:2px solid var(--blue);transform:rotate(45deg)}
.pipe__step{margin:0;font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.07em;text-transform:uppercase;color:var(--blue);padding-left:var(--sp-3)}
.pipe__stage:first-child .pipe__step{padding-left:0}
.pipe__step::before{content:counter(pipe) "  "}
.pipe__title{margin:0;font-family:var(--font-display);font-weight:750;font-stretch:106%;font-size:1.2rem;line-height:1.22;letter-spacing:0;color:var(--ink)}
.pipe__stage p{margin:0;font-size:var(--fs-sm);line-height:1.5}
.pipe__data{margin:0;font-family:var(--font-mono);font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--ink);border-top:1px solid var(--rule)}
.pipe__data div{display:flex;justify-content:space-between;gap:var(--sp-3);padding:.3rem 0;border-bottom:1px solid var(--rule)}
.pipe__data dt{color:var(--text-muted)} .pipe__data dd{margin:0;text-align:right}
.pipe__data .is-diff dt,.pipe__data .is-diff dd{color:var(--break);font-weight:500}
.pipe__meta{margin:auto 0 0;padding-top:var(--sp-3);border-top:2px solid var(--ink);display:grid;gap:.35rem;font-size:var(--fs-caption)}
.pipe__meta div{display:grid;grid-template-columns:3.6rem minmax(0,1fr);gap:var(--sp-2);align-items:baseline}
.pipe__meta dt{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted)}
.pipe__meta dd{margin:0;color:var(--ink);font-weight:500}
.pipe__stage--out{background:var(--navy);color:var(--on-navy-muted);border-left-color:var(--navy)}
.pipe__stage--out .pipe__step{color:var(--on-navy-muted)} .pipe__stage--out .pipe__title{color:#fff}
.pipe__stage--out .pipe__meta{border-top-color:#fff} .pipe__stage--out .pipe__meta dt{color:var(--on-navy-muted)} .pipe__stage--out .pipe__meta dd{color:#fff}
.status--onnavy{color:var(--navy);background:#fff}
.pipe__foot{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2) var(--sp-4);margin:0;padding:var(--sp-3) var(--sp-6);border-top:1px solid var(--rule);background:var(--sky-50);font-size:var(--fs-sm);color:var(--ink)}
.pipe__foot b{font-family:var(--font-mono);font-size:.75rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted)}
@media (max-width:1020px){.pipe__stages{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pipe__stage:nth-child(3){border-left:0} .pipe__stage:nth-child(n+3){border-top:1px solid var(--rule)}
  .pipe__stage:nth-child(3)::before,.pipe__stage:nth-child(3)::after{display:none} .pipe__stage:nth-child(3) .pipe__step{padding-left:0}}
@media (max-width:620px){.pipe__stages{grid-template-columns:minmax(0,1fr)}
  .pipe__stage,.pipe__stage:nth-child(n){border-left:0;padding:var(--sp-6) var(--sp-4)} .pipe__stage+.pipe__stage{border-top:1px solid var(--rule)}
  .pipe__stage .pipe__step{padding-left:0}
  .pipe__stage+.pipe__stage::before,.pipe__stage:nth-child(3)::before{display:block;left:auto;right:var(--sp-4);top:-12px}
  .pipe__stage+.pipe__stage::after,.pipe__stage:nth-child(3)::after{display:block;left:auto;right:calc(var(--sp-4) + 7px);top:-7px;transform:rotate(135deg)}
  .pipe__foot{padding-inline:var(--sp-4)}}
@media (prefers-reduced-motion:no-preference){
  .pipe .pipe__stage>*{opacity:0;transition:opacity .5s var(--ease-out)}
  .pipe.is-in .pipe__stage>*{opacity:1}
  .pipe.is-in .pipe__stage:nth-child(2)>*{transition-delay:.22s} .pipe.is-in .pipe__stage:nth-child(3)>*{transition-delay:.44s} .pipe.is-in .pipe__stage:nth-child(4)>*{transition-delay:.66s}
}

/* assurance band: verified facts beside the SOC 2 mark */
.assure{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-8) var(--sp-12);align-items:center}
.assure>*{min-width:0}
.strip--3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:1020px){.assure{grid-template-columns:minmax(0,1fr)}}
@media (max-width:900px){.strip--3{grid-template-columns:minmax(0,1fr)}.strip--3>div,.strip--3>div:nth-child(even){padding-left:0;border-left:0;border-top:1px solid var(--rule)}.strip--3>div:first-child{border-top:0}}
.soc{display:inline-flex;align-items:stretch;border:1px solid var(--navy);background:var(--paper);color:var(--ink);min-width:0;max-width:100%;transition:border-color .18s var(--ease-out),box-shadow .18s var(--ease-out)}
a.soc:hover{color:var(--ink);border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.soc__seal{display:grid;place-content:center;justify-items:center;background:var(--navy);padding:var(--sp-4) var(--sp-6);flex:none}
.soc__seal b{font-family:var(--font-display);color:#fff;font-weight:800;font-stretch:120%;font-size:2rem;line-height:1;letter-spacing:-.01em;white-space:nowrap}
.soc__seal i{font-style:normal;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--on-navy-muted);margin-top:.4rem}
.soc__text{display:grid;align-content:center;gap:.15rem;padding:var(--sp-3) var(--sp-6);font-size:var(--fs-sm);line-height:1.4;min-width:0}
.soc__text b{font-family:var(--font-display);font-weight:700;font-stretch:105%;font-size:1.05rem;color:var(--ink)}
.soc__text span{color:var(--text)}
.soc--lg{flex-direction:column;width:21rem}
.soc--lg .soc__seal{padding:var(--sp-6) var(--sp-6)} .soc--lg .soc__seal b{font-size:3.4rem} .soc--lg .soc__seal i{font-size:.85rem}
.soc--lg .soc__text{padding:var(--sp-4) var(--sp-6)} .soc--lg .soc__text b{font-size:1.2rem}
.soc--onnavy{border-color:var(--navy-rule);background:transparent}
.soc--onnavy .soc__seal{background:#fff} .soc--onnavy .soc__seal b{color:var(--navy)} .soc--onnavy .soc__seal i{color:var(--text-muted)}
.soc--onnavy .soc__text b{color:#fff} .soc--onnavy .soc__text span{color:var(--on-navy-muted)}
a.soc--onnavy:hover{border-color:#fff;box-shadow:none}
.site-footer a.soc{margin-top:var(--sp-6);color:#fff}
@media (max-width:1020px){.soc--lg{flex-direction:row;width:auto}.soc--lg .soc__seal b{font-size:2.4rem}}
@media (max-width:520px){.soc--lg{flex-direction:column;display:flex}}

/* advise, build, run as one connected model */
.model__steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(6,auto)}
/* each step shares the six rows, so tags, verbs, outputs and entry points line up across the three */
.model__step{position:relative;border-top:2px solid var(--ink);padding:var(--sp-8) var(--sp-8) 0 0;display:grid;grid-row:span 6;grid-template-rows:subgrid;row-gap:var(--sp-3);min-width:0}
.model__step .link{justify-self:start}
.model__step:last-child{padding-right:0}
.model__step::before{content:"";position:absolute;left:0;top:-8px;width:14px;height:14px;background:var(--blue)}
.model__step:not(:last-child)::after{content:"";position:absolute;right:var(--sp-4);top:-7px;width:10px;height:10px;border-top:2px solid var(--ink);border-right:2px solid var(--ink);transform:rotate(45deg)}
.model__tag{margin:0;font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted)}
.model__verb{margin:0;font-family:var(--font-display);font-weight:800;font-stretch:118%;font-size:clamp(2.4rem,1.8rem + 2.4vw,3.6rem);line-height:1;letter-spacing:-.02em;color:var(--ink)}
.model__step>p{margin:0;max-width:34ch}
.model__io{display:contents}
.model__io div{min-width:0}
.model__io dt{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.15rem}
.model__io dd{margin:0;color:var(--ink);font-weight:500;line-height:1.4}
.model__io .is-entry{background:var(--paper);border:1px solid var(--rule-strong);border-left:3px solid var(--blue);padding:var(--sp-3) var(--sp-4)}
.model__io .is-entry dt{color:var(--blue-strong)}
.model__loop{position:relative;margin:var(--sp-8) 0 0;height:2.75rem;border:2px solid var(--ink);border-top:0;display:flex;align-items:flex-end;justify-content:center}
.model__loop::before{content:"";position:absolute;left:-7px;top:-2px;width:12px;height:12px;border-top:2px solid var(--ink);border-left:2px solid var(--ink);transform:rotate(45deg)}
.model__loop span{transform:translateY(50%);background:var(--sky-50);padding:0 var(--sp-4);font-size:var(--fs-sm);font-weight:500;color:var(--ink);text-align:center}
.section:not(.section--sky) .model__loop span{background:var(--paper)}
@media (max-width:900px){
  .model__steps{grid-template-columns:minmax(0,1fr)}
  .model__steps{grid-template-rows:none}
  .model__step,.model__step:last-child{display:flex;flex-direction:column;gap:var(--sp-3);border-top:0;border-left:2px solid var(--ink);padding:0 0 var(--sp-12) var(--sp-6)}
  .model__step::before{left:-8px;top:.5rem}
  .model__step:not(:last-child)::after{right:auto;left:-6px;top:auto;bottom:6px;transform:rotate(135deg)}
  .model__loop{height:auto;border:0;border-left:2px dashed var(--ink);margin:0;padding:0 0 0 var(--sp-6);justify-content:flex-start}
  .model__loop::before{display:none}
  .model__loop span{transform:none;background:none;padding:0;text-align:left}
}

/* flagship case on the home page */
.section.casefx{padding-block:clamp(5rem,4rem + 6vw,9rem)}
.casefx__head{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:var(--sp-8) var(--sp-12);align-items:end;margin-bottom:var(--sp-16)}
.casefx__head>*{min-width:0}
.casefx__head h2{font-size:clamp(2.1rem,1.4rem + 3vw,3.6rem);line-height:1.04;margin:0;max-width:13em}
.casefx__figure{margin:0;border-left:2px solid var(--sun);padding-left:var(--sp-6)}
.casefx__figure b{display:block;font-family:var(--font-display);font-weight:800;font-stretch:120%;font-size:clamp(3.4rem,2.4rem + 4.5vw,6rem);line-height:.95;letter-spacing:-.03em;color:#fff;white-space:nowrap}
.casefx__figure span{display:block;margin-top:var(--sp-3);color:var(--on-navy);max-width:22ch;line-height:1.4}
.casefx__seq{list-style:none;margin:0 0 var(--sp-16);padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.casefx__seq li{position:relative;border-top:2px solid var(--navy-rule);padding:var(--sp-6) var(--sp-8) 0 0;min-width:0}
.casefx__seq li::before{content:"";position:absolute;left:0;top:-7px;width:12px;height:12px;background:var(--on-navy-muted)}
.casefx__seq li.is-result{border-top-color:var(--sun)} .casefx__seq li.is-result::before{background:var(--sun)}
.casefx__seq h3{font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;font-stretch:100%;letter-spacing:.07em;text-transform:uppercase;color:var(--on-navy-muted);margin:0 0 var(--sp-3)}
.casefx__seq p{margin:0;font-family:var(--font-display);font-weight:650;font-stretch:104%;font-size:clamp(1.15rem,1rem + .6vw,1.4rem);line-height:1.3;color:#fff}
.casefx__foot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-8) var(--sp-12);align-items:end}
.casefx__foot .quote blockquote{font-size:clamp(1.2rem,1rem + .8vw,1.6rem);font-weight:600}
@media (max-width:900px){.casefx__head,.casefx__foot{grid-template-columns:minmax(0,1fr)}.casefx__head{margin-bottom:var(--sp-12)}
  .casefx__seq{grid-template-columns:minmax(0,1fr);margin-bottom:var(--sp-12)}
  .casefx__seq li{border-top:0;border-left:2px solid var(--navy-rule);padding:0 0 var(--sp-8) var(--sp-6)} .casefx__seq li::before{left:-7px;top:.3rem}
  .casefx__seq li.is-result{border-left-color:var(--sun);padding-bottom:0}}

/* products in action: one annotated workflow and a compact index */
.showcase{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--sp-12);align-items:center;margin-bottom:var(--sp-16)}
.showcase>*{min-width:0}
.showcase .lrows{font-size:.86rem} .showcase .frame__body{padding:var(--sp-4) var(--sp-6)}
.showcase .lrow{grid-template-columns:auto minmax(0,1.8fr) auto auto}
.showcase .lrow span:nth-child(2){text-align:left} .showcase .lrow span:nth-child(3){text-align:right}
.mark{display:inline-grid;place-items:center;width:1.45rem;height:1.45rem;background:var(--navy);color:#fff;font-family:var(--font-mono);font-size:.78rem;font-weight:500;line-height:1;flex:none}
.mark--none{background:none}
.showcase__notes{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-6)}
.showcase__notes li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-4);align-items:start}
.showcase__notes h3{margin:0 0 .2rem;font-size:1.15rem} .showcase__notes p{margin:0;font-size:var(--fs-sm)}
.prodgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:2px solid var(--ink)}
.prod{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-6) var(--sp-6) var(--sp-6) 0;color:inherit;min-width:0;border-bottom:1px solid var(--rule)}
.prod+.prod{padding-left:var(--sp-6);border-left:1px solid var(--rule)}
.prod h3{margin:0;font-size:1.35rem;transition:color .18s var(--ease-out)} .prod p{margin:0;font-size:var(--fs-sm)}
.prod .model__tag{color:var(--text-muted)}
.prod .link{margin-top:auto;padding-top:var(--sp-3);font-size:var(--fs-sm)}
a.prod:hover{color:inherit} a.prod:hover h3{color:var(--blue)} a.prod:hover .link::after{transform:translateX(3px)}
@media (max-width:980px){.showcase{grid-template-columns:minmax(0,1fr);gap:var(--sp-8);margin-bottom:var(--sp-12)}.prodgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.prod:nth-child(3){padding-left:0;border-left:0}}
@media (max-width:560px){.prodgrid{grid-template-columns:minmax(0,1fr)}.prod,.prod+.prod{padding-left:0;border-left:0}
  .showcase .frame__body{padding:var(--sp-3) var(--sp-4)} .showcase .lrow{grid-template-columns:auto minmax(0,1fr) auto} .showcase .lrow span:nth-child(3){display:none}}

/* leadership: text-led profile until an approved portrait exists */
.leaders{display:grid;gap:var(--sp-8)}
.leader{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-6) var(--sp-8);align-items:start;border-top:2px solid var(--ink);padding-top:var(--sp-6)}
.leader__mono,.leader__photo{width:7rem;aspect-ratio:4/5;background:var(--navy);object-fit:cover}
.leader__mono{display:grid;place-items:center;color:#fff;font-family:var(--font-display);font-weight:800;font-stretch:118%;font-size:1.9rem;letter-spacing:-.01em}
.leader h3{margin:0 0 .2rem;font-size:clamp(1.4rem,1.2rem + .8vw,1.8rem)}
.leader .person__role{margin:0 0 var(--sp-3)} .leader p:last-child{margin-bottom:0}
@media (max-width:480px){.leader{grid-template-columns:minmax(0,1fr)}.leader__mono,.leader__photo{width:5rem}}

/* case study page read as a report: numbered sections */
.report{counter-reset:rsec}
.report .ed{counter-increment:rsec}
.report .ed__aside .kicker::before{content:counter(rsec,decimal-leading-zero) "  "}
.report .ed__aside h2{font-size:clamp(1.5rem,1.25rem + 1.1vw,2rem)}
.report .section{padding-block:clamp(3rem,2.4rem + 3vw,5rem)}
.summary{border:1px solid var(--rule-strong);border-top:3px solid var(--blue);background:var(--paper);padding:var(--sp-8);display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:var(--sp-6) var(--sp-16)}
.summary>*{min-width:0} .summary h2{font-size:clamp(1.5rem,1.25rem + 1.1vw,2rem);margin:0}
.summary ol{margin:0;padding-left:1.3rem;display:grid;gap:var(--sp-2);color:var(--ink);font-size:var(--fs-lede);line-height:1.45}
@media (max-width:800px){.summary{grid-template-columns:minmax(0,1fr);padding:var(--sp-6)}}

/* why dacumen: each claim sits beside a framed block of evidence */
.reason{align-items:start}
.reason__ev{background:var(--paper);border:1px solid var(--rule-strong);border-left:3px solid var(--blue);padding:var(--sp-4) var(--sp-6)}
.ledger tbody tr.is-us th,.ledger tbody tr.is-us td{background:var(--sky);color:var(--ink);font-weight:500;padding-left:var(--sp-4)}
.ledger tbody tr.is-us th{font-weight:700;box-shadow:inset 3px 0 0 var(--blue)}
@media (max-width:640px){.ledger tbody tr.is-us{background:var(--sky);padding-inline:var(--sp-4);box-shadow:inset 3px 0 0 var(--blue)}.ledger tbody tr.is-us th,.ledger tbody tr.is-us td{padding-left:0;box-shadow:none;background:none}}

/* product pages: more room for the workflow figure */
.hero__grid:has(.crumbs){grid-template-columns:minmax(0,10fr) minmax(0,11fr)}
@media (max-width:980px){.hero__grid:has(.crumbs){grid-template-columns:minmax(0,1fr)}}
.hero__media .lrows{font-size:.86rem} .hero__media .frame__body{padding:var(--sp-4) var(--sp-6)}

/* interaction: quiet feedback on hover, press and focus */
:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.btn:active{transform:translateY(1px)}
.row__link::after{content:"\2192";display:inline-block;margin-left:.35rem;transition:transform .18s var(--ease-out)}
a.row:hover .row__link::after{transform:translateX(3px)}
.row h2,.row h3,.post h2,.post h3{transition:color .18s var(--ease-out)}
@media (prefers-reduced-motion:no-preference){
  .dropdown.is-open .dropdown__menu{animation:menu-in .16s var(--ease-out)}
  @keyframes menu-in{from{opacity:0;transform:translateX(-50%) translateY(-4px)}to{opacity:1;transform:translateX(-50%)}}
}
@media (prefers-reduced-motion:reduce){.soc,.prod h3,.row h2,.row h3,.post h2,.post h3,.row__link::after{transition:none}.btn:active{transform:none}}
.sechero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-8) var(--sp-12);align-items:end}
.sechero>*{min-width:0}
@media (max-width:1020px){.sechero{grid-template-columns:minmax(0,1fr)}}
.footer-col a.nav__logo{display:inline-flex;padding:0}
.footer-col a.soc{display:inline-flex;padding:0}

/* Client references */
.voices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-12)}
.voices--one{grid-template-columns:minmax(0,1fr)}
.voices .quote{max-width:none;display:flex;flex-direction:column;border-left:3px solid var(--blue);padding-left:var(--sp-6)}
.voices--one .quote{max-width:54rem}
.voices .quote blockquote{font-size:clamp(1.1rem,1rem + .5vw,1.35rem);font-weight:600;line-height:1.4}
.voices .quote figcaption{margin-top:auto;padding-top:var(--sp-6)}
.voices+.strip__note{margin-top:var(--sp-8)}
@media (max-width:900px){.voices{grid-template-columns:minmax(0,1fr);gap:var(--sp-8)}}

/* AICPA SOC logo in the badge */
.soc .soc__seal{background:#fff;padding:var(--sp-3);border-right:1px solid var(--rule)}
.soc__seal img{display:block;width:5.5rem;height:5.5rem}
.soc--lg .soc__seal{padding:var(--sp-4);border-right:0;border-bottom:1px solid var(--rule)}
.soc--lg .soc__seal img{width:11rem;height:11rem}
.soc--onnavy .soc__seal{border-right:0;padding:var(--sp-2)}
.soc--onnavy .soc__seal img{width:4.5rem;height:4.5rem}
@media (max-width:1020px){.soc--lg .soc__seal{border-bottom:0;border-right:1px solid var(--rule)}.soc--lg .soc__seal img{width:7rem;height:7rem}}
@media (max-width:520px){.soc--lg .soc__seal{border-right:0;border-bottom:1px solid var(--rule)}}

/* Client stories: data figures */
.datafig{margin-bottom:var(--sp-8)}
.frame__scroll{overflow-x:auto;max-width:100%;position:relative}
.frame__scroll:focus-visible{outline:3px solid var(--blue);outline-offset:-3px}
.datafig table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:.78rem;font-variant-numeric:tabular-nums;color:var(--ink);min-width:44rem}
.datafig th,.datafig td{padding:.6rem .7rem;border-bottom:1px solid var(--rule);text-align:left;white-space:nowrap;vertical-align:middle}
.datafig thead th{font-size:.7rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);border-bottom:2px solid var(--ink)}
.datafig tbody th{font-weight:500;font-family:var(--font-sans);font-size:.85rem;white-space:normal;min-width:15rem}
.datafig tbody th small{display:block;font-family:var(--font-mono);font-size:.75rem;color:var(--text-muted)}
.datafig tbody tr:last-child>*{border-bottom:0}
.datafig .mark{margin-right:.4rem;vertical-align:middle}
.dot{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;background:var(--match);margin-right:.4rem;vertical-align:baseline}
.dot--due{background:transparent;border:2px dashed #B7791F;width:.7rem;height:.7rem;vertical-align:-1px}
.arrive .is-off{background:var(--sky-50)}
.arrive .is-today{border-left:2px solid var(--ink);background:var(--sky-50);font-weight:500}
.xmatrix td{text-align:center;border-left:1px solid var(--rule);min-width:5.2rem}
.xmatrix thead th:not(:first-child){text-align:center;white-space:normal;line-height:1.25}
.xmatrix .is-x{background:var(--break-soft);color:var(--break);font-weight:500}
.datafig__key{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-6);margin:0;padding:.6rem var(--sp-4);border-top:1px solid var(--rule);font-size:var(--fs-sm);color:var(--text-muted)}
.xkey{display:inline-block;width:.9rem;height:.9rem;background:var(--break-soft);border:1px solid var(--break);margin-right:.45rem;vertical-align:-2px}
.datafig+.showcase__notes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-8)}
@media (max-width:900px){.datafig+.showcase__notes{grid-template-columns:minmax(0,1fr);gap:var(--sp-6)}}
.casehero .crumbs a{color:inherit}
.casefx__note{margin:0;max-width:44rem;color:var(--on-navy);font-size:var(--fs-lede);line-height:1.5}
.voices--3{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-8)}
@media (max-width:1020px){.voices--3{grid-template-columns:minmax(0,1fr)}}
.casefx__figure b{font-size:clamp(2.8rem,2rem + 3.2vw,4.4rem)}
