/* Algorithm page — document tokens bridged onto the site design system,
   so the two can never drift apart. */
:root{
  --ink:var(--navy); --ink-2:var(--navy-700);
  --paper:var(--cream); --surface:var(--white);
  --rule:var(--cream-300); --rule-soft:var(--cream-200);
  --text:#1A1D22; --text-2:#4E555D; --text-3:#68707A;
  --brass:var(--teal); --brass-lift:var(--teal-100); --brass-soft:var(--teal-50);
  --flag:#A32219; --flag-soft:#FBEDEB; --flag-rule:#E4B5AF;
  --caution:#875400; --caution-soft:#FBF2E2; --caution-rule:#E4CFA3;
  --good:#2C6A4A; --good-soft:#E9F2EC;
  --on-ink:#E2E5E8; --on-ink-2:#A8AFB6; --on-ink-rule:var(--hairline-on-navy);
  --dg-line:#1F242B;
  --serif:var(--font-display); --sans:var(--font-body); --mono:var(--font-body);
  --maxw:1240px; --prose:70ch;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--text);font-family:var(--sans);
  font-size:15.5px;line-height:1.65;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;text-wrap:balance;margin:0;
  letter-spacing:-.012em;line-height:1.18}
p{margin:0 0 .9em}
a{color:inherit}
strong{font-weight:600;color:var(--text)}

/* ---------- masthead ---------- */
.masthead{background:var(--ink);color:var(--on-ink);padding:0 0 3.2rem}
.mh-bar{border-bottom:1px solid var(--on-ink-rule);padding:1.05rem 0}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,4.5vw,52px)}
.mh-bar .wrap{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.lockup{display:flex;align-items:center}
.lk-lockup{height:62px;width:auto;display:block}
@media(max-width:560px){.lk-lockup{height:50px}}
.mh-meta{font-family:var(--mono);font-size:.7rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--on-ink-2)}
.mh-body{padding-top:3.2rem;display:grid;gap:2.4rem;
  grid-template-columns:minmax(0,1fr) minmax(0,20rem);align-items:end}
@media(max-width:900px){.mh-body{grid-template-columns:1fr;gap:1.8rem}}
.eyebrow{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--brass-lift);margin-bottom:1rem}
.masthead h1{font-size:clamp(2.3rem,5.2vw,3.6rem);color:#fff;max-width:16ch}
.masthead h1 em{font-style:italic;color:var(--brass-lift)}
.mh-lede{color:var(--on-ink-2);max-width:52ch;margin-top:1.1rem;font-size:1.02rem}
.mh-facts{display:grid;gap:0;border-top:1px solid var(--on-ink-rule)}
.mh-facts div{display:flex;justify-content:space-between;gap:1rem;padding:.62rem 0;
  border-bottom:1px solid var(--on-ink-rule);font-size:.82rem}
.mh-facts dt{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--on-ink-2)}
.mh-facts dd{margin:0;text-align:right;font-weight:500}

.stamp{display:inline-flex;align-items:center;gap:.5rem;margin-top:1.6rem;
  border:1px solid #4E7A62;color:#8FD1AC;background:rgba(44,106,74,.18);
  font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;
  padding:.42rem .75rem}
.stamp span{width:6px;height:6px;background:#8FD1AC;border-radius:50%}

/* ---------- layout ---------- */
.shell{max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,4.5vw,52px) 5rem;
  display:grid;gap:clamp(2rem,4vw,3.6rem);
  grid-template-columns:15rem minmax(0,1fr)}
@media(max-width:1000px){.shell{grid-template-columns:1fr}}

nav.toc{position:sticky;top:1.5rem;align-self:start;padding-top:2.6rem;
  font-size:.83rem;max-height:calc(100vh - 3rem);overflow-y:auto}
@media(max-width:1000px){nav.toc{position:static;max-height:none;
  border-bottom:1px solid var(--rule);padding-bottom:1.6rem}}
.toc h2{font-family:var(--mono);font-size:.68rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--text-3);margin-bottom:.85rem;font-weight:500}
.toc ol{list-style:none;margin:0;padding:0 0 0 .9rem;display:grid;gap:.05rem;
  border-left:1px solid var(--rule)}
.toc a{position:relative;display:grid;grid-template-columns:1.9rem 1fr;gap:.3rem;
  padding:.28rem 0;text-decoration:none;color:var(--text-2);
  transition:color .16s ease}
.toc a:hover{color:var(--brass)}
.toc a .n{font-family:var(--mono);font-size:.72rem;color:var(--text-3);
  transition:color .16s ease}
.toc a:hover .n{color:var(--brass)}
/* scrollspy: a brass tick on the rule marks the section in view */
.toc a::before{content:"";position:absolute;left:-.9rem;top:.18rem;bottom:.18rem;
  width:2px;background:var(--brass);transform:scaleY(0);transform-origin:50% 50%;
  opacity:0;transition:transform .18s ease,opacity .18s ease}
.toc a.current::before{transform:scaleY(1);opacity:1}
.toc a.current{color:var(--brass);font-weight:500}
.toc a.current .n{color:var(--brass)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}

main{padding-top:2.6rem;min-width:0}

/* ---------- sections ---------- */
section{margin-bottom:3.4rem;scroll-margin-top:1.5rem}
.sec-head{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:baseline;
  border-top:2px solid var(--ink);padding-top:.85rem;margin-bottom:1.5rem}
.sec-n{font-family:var(--mono);font-size:.78rem;font-weight:600;color:var(--brass);
  letter-spacing:.06em}
.sec-head h2{font-size:clamp(1.5rem,2.7vw,1.95rem)}
.sec-head p{grid-column:2;margin:.45rem 0 0;color:var(--text-2);max-width:var(--prose)}
h3{font-size:1.18rem;margin:2rem 0 .7rem;padding-bottom:.4rem;
  border-bottom:1px solid var(--rule-soft)}
h4{font-size:.98rem;font-family:var(--sans);font-weight:600;margin:1.4rem 0 .5rem;
  letter-spacing:.005em}
main p,main li{max-width:var(--prose)}
ul{padding-left:1.15rem;margin:0 0 1rem}
li{margin-bottom:.34rem}
li::marker{color:var(--brass)}

/* ---------- flow diagram ---------- */
.flow{border:1px solid var(--rule);background:var(--surface);padding:1.6rem 1.4rem;
  margin:0 0 1.6rem;overflow-x:auto}
.flow-title{font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--text-3);margin-bottom:1.15rem}
.flow-track{display:grid;grid-template-columns:repeat(5,minmax(9.2rem,1fr));
  gap:.55rem;min-width:52rem}
.node{border:1px solid var(--rule);border-top:3px solid var(--brass);
  padding:.8rem .8rem .9rem;background:var(--paper);position:relative;display:flex;
  flex-direction:column;gap:.34rem}
.node::after{content:"";position:absolute;right:-.55rem;top:50%;width:.55rem;
  height:1px;background:var(--rule)}
.node:last-child::after{display:none}
.node .st{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--brass);font-weight:600}
.node .nm{font-family:var(--serif);font-size:1.02rem;line-height:1.25}
.node .wk{font-family:var(--mono);font-size:.7rem;color:var(--text-3)}
.node .ex{font-size:.78rem;color:var(--text-2);line-height:1.42;margin-top:.15rem;
  padding-top:.42rem;border-top:1px solid var(--rule-soft)}
.flow-gate{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;
  border:1px solid var(--flag-rule);background:var(--flag-soft);padding:.6rem .85rem;
  margin-bottom:.55rem;min-width:52rem}
.flow-gate .lbl{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--flag);font-weight:600}
.flow-gate .txt{font-size:.85rem;color:var(--text-2)}
.flow-note{font-size:.8rem;color:var(--text-3);margin:.9rem 0 0;max-width:none}

/* ---------- algorithm diagram ---------- */
figure.dgm{margin:0 0 1.4rem;border:1px solid var(--rule);background:var(--surface);
  padding:1.5rem 1.3rem 1.2rem}
.dgm-scroll{overflow-x:auto}
.dgm svg{display:block;min-width:820px;width:100%;height:auto}
.dgm svg text{font-family:var(--sans)}
.dg-step{font-family:var(--sans);font-weight:600;font-size:10px;letter-spacing:.05em;
  fill:var(--brass);font-weight:600}
.dg-h{font-family:var(--serif);font-size:16.5px;fill:var(--text)}
.dg-b{font-size:11.5px;fill:var(--text-2)}
.dg-d{font-size:12.5px;font-weight:600;fill:var(--text)}
.dg-y{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;fill:var(--text-3)}
.dg-hi{font-family:var(--serif);font-size:15px;fill:#fff}
.dg-bi{font-size:11.5px;fill:var(--on-ink-2)}
.dg-flag{fill:var(--flag)}
.dg-lift{fill:var(--brass-lift)}
.dg-good{fill:var(--good)}
.dgm figcaption{font-size:.8rem;color:var(--text-3);margin-top:1.1rem;
  padding-top:.9rem;border-top:1px solid var(--rule-soft)}
.key{display:flex;gap:1.1rem;flex-wrap:wrap;margin-bottom:.5rem;
  font-family:var(--mono);font-size:.66rem;letter-spacing:.07em;
  text-transform:uppercase;color:var(--text-3)}
.key span{display:inline-flex;align-items:center;gap:.38rem}
.key i{width:15px;height:11px;display:inline-block;border:1px solid var(--rule);
  background:var(--paper)}
.key i.st{border-color:var(--rule);border-top:3px solid var(--brass);background:var(--surface)}
.key i.dc{transform:rotate(45deg);width:10px;height:10px;border-color:var(--dg-line)}
.key i.ex{border-color:var(--good);background:var(--good-soft)}
.key i.em{border-color:var(--flag);background:var(--flag-soft)}

/* ---------- visit inclusions ---------- */
.vis{border:1px solid var(--rule);background:var(--surface);margin:0 0 .85rem}
.vis-hd{background:var(--ink);color:var(--on-ink);padding:.72rem 1.1rem;display:flex;
  justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}
.vis-code{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;
  color:var(--brass-lift);font-weight:600;margin-right:.7rem}
.vis-nm{font-family:var(--serif);font-size:1.06rem;color:#fff}
.vis-fee{font-family:var(--mono);font-size:.78rem;font-weight:600;color:#fff;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.vis-bd{padding:.95rem 1.1rem 1.1rem}
ul.inc{list-style:none;margin:0;padding:0;display:grid;gap:.42rem}
ul.inc li{max-width:none;position:relative;padding-left:1.4rem;font-size:.885rem;
  line-height:1.5;margin:0}
ul.inc li::before{content:"\2713";position:absolute;left:0;top:0;color:var(--brass);
  font-family:var(--mono);font-weight:700;font-size:.8rem;line-height:1.65}
.vis-note{font-size:.85rem;color:var(--text-2);margin:.85rem 0 0;max-width:none;
  padding-top:.7rem;border-top:1px solid var(--rule-soft)}

/* ---------- do / do not ---------- */
.do-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);
  border:1px solid var(--rule);margin:1.4rem 0}
@media(max-width:760px){.do-grid{grid-template-columns:1fr}}
.do-col{background:var(--surface);padding:0 0 1.15rem}
.do-hd{padding:.72rem 1.1rem;font-family:var(--mono);font-size:.72rem;letter-spacing:.11em;
  text-transform:uppercase;font-weight:600}
.do-yes .do-hd{background:var(--good-soft);color:var(--good);border-bottom:2px solid var(--good)}
.do-no .do-hd{background:var(--flag-soft);color:var(--flag);border-bottom:2px solid var(--flag)}
.do-col ul{list-style:none;margin:0;padding:.9rem 1.1rem 0;display:grid;gap:.52rem}
.do-col li{max-width:none;position:relative;padding-left:1.5rem;
  font-size:.895rem;line-height:1.46;margin:0}
.do-col li::before{position:absolute;left:0;top:0;font-family:var(--mono);
  font-weight:700;font-size:.82rem;line-height:1.62}
.do-yes li::before{content:"\2713";color:var(--good)}
.do-no li::before{content:"\2715";color:var(--flag)}

/* ---------- prescribing scope ---------- */
.scope-grid{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);
  grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));margin:1.2rem 0}
.scope-cell{background:var(--surface);padding:.95rem 1rem 1.05rem}
.scope-cell h4{margin:0 0 .1rem;font-family:var(--mono);font-size:.68rem;
  letter-spacing:.1em;text-transform:uppercase;color:var(--brass)}
.scope-cell .sub{font-size:.75rem;color:var(--text-3);margin:0 0 .6rem;max-width:none}
.scope-cell ul{margin:0;padding-left:1rem;font-size:.86rem}
.scope-cell li{margin-bottom:.22rem;max-width:none;color:var(--text-2)}
.scope-cell li b{color:var(--text)}
.scope-cell--no{background:var(--flag-soft)}
.scope-cell--no h4{color:var(--flag)}
.scope-cell--no li{color:var(--text-2)}

/* ---------- callouts ---------- */
.flagbox{border-left:3px solid var(--flag);background:var(--flag-soft);
  padding:1.1rem 1.2rem;margin:1.3rem 0}
.flagbox .hd{font-family:var(--mono);font-size:.7rem;letter-spacing:.11em;
  text-transform:uppercase;color:var(--flag);font-weight:600;margin-bottom:.6rem}
.flagbox p,.flagbox li{max-width:none}
.flagbox :last-child{margin-bottom:0}

.warn{border-left:3px solid var(--caution);background:var(--caution-soft);
  padding:1.1rem 1.2rem;margin:1.3rem 0}
.warn .hd{font-family:var(--mono);font-size:.7rem;letter-spacing:.11em;
  text-transform:uppercase;color:var(--caution);font-weight:600;margin-bottom:.6rem}
.warn p,.warn li{max-width:none}
.warn :last-child{margin-bottom:0}

blockquote.ev{border-left:2px solid var(--brass);margin:1.3rem 0;padding:.15rem 0 .15rem 1.15rem;
  color:var(--text-2);font-size:.93rem}
blockquote.ev p{max-width:none}
blockquote.ev :last-child{margin-bottom:0}
blockquote.ev cite{display:block;margin-top:.5rem;font-family:var(--mono);font-size:.72rem;
  font-style:normal;color:var(--text-3);letter-spacing:.02em}

.rule-card{border:1px solid var(--ink);background:var(--surface);margin:1.4rem 0}
.rule-card .hd{background:var(--ink);color:var(--on-ink);padding:.7rem 1.1rem;
  font-family:var(--mono);font-size:.72rem;letter-spacing:.11em;text-transform:uppercase}
.rule-card .bd{padding:.4rem 1.1rem 1.1rem}
.rule-card table{margin:.6rem 0 0}

/* ---------- tables ---------- */
.tw{overflow-x:auto;margin:1.1rem 0;border:1px solid var(--rule);background:var(--surface)}
table{border-collapse:collapse;width:100%;font-size:.87rem;min-width:34rem}
th,td{text-align:left;padding:.6rem .8rem;border-bottom:1px solid var(--rule-soft);
  vertical-align:top}
thead th{background:var(--paper);font-family:var(--mono);font-size:.68rem;
  letter-spacing:.09em;text-transform:uppercase;color:var(--text-2);font-weight:600;
  border-bottom:1px solid var(--rule);white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
td.dose,td.mme{font-family:var(--mono);font-size:.82rem;font-variant-numeric:tabular-nums;
  white-space:nowrap}
td.mme{text-align:right}
.tw--flag thead th{background:var(--flag-soft);color:var(--flag)}

/* ---------- badges ---------- */
.badge{display:inline-block;font-family:var(--mono);font-size:.64rem;letter-spacing:.09em;
  text-transform:uppercase;padding:.13rem .42rem;border:1px solid;font-weight:600;
  white-space:nowrap;vertical-align:.06em}
.b-strong{color:var(--good);border-color:var(--good);background:var(--good-soft)}
.b-mod{color:var(--brass);border-color:var(--brass);background:var(--brass-soft)}
.b-ltd{color:var(--text-2);border-color:var(--rule);background:var(--paper)}
.b-against{color:var(--flag);border-color:var(--flag);background:var(--flag-soft)}
.b-never{color:#fff;border-color:var(--flag);background:var(--flag)}
:root[data-theme="dark"] .b-never,
:root:not([data-theme="light"]) .b-never{color:#160B09}
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]) .b-never{color:#fff}}

.legend{display:flex;gap:.45rem;flex-wrap:wrap;margin:.9rem 0 0;padding-top:.9rem;
  border-top:1px solid var(--rule-soft)}

/* ---------- refs ---------- */
.refs{counter-reset:r;list-style:none;padding:0;font-size:.85rem}
.refs li{counter-increment:r;position:relative;padding:.52rem 0 .52rem 2.5rem;
  border-bottom:1px solid var(--rule-soft);max-width:none;margin:0}
.refs li::before{content:counter(r) ".";position:absolute;left:0;top:.52rem;
  font-family:var(--mono);font-size:.76rem;color:var(--brass);
  font-variant-numeric:tabular-nums;line-height:1.65}

/* ---------- footer ---------- */
footer{background:var(--ink);color:var(--on-ink-2);padding:2.4rem 0;font-size:.83rem}
footer .wrap{display:flex;justify-content:space-between;gap:1.4rem;flex-wrap:wrap}
footer strong{color:var(--on-ink)}
footer .mono{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;
  text-transform:uppercase}

:focus-visible{outline:2px solid var(--brass);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{
  .masthead{background:#fff;color:#000}
  nav.toc{display:none}
  .shell{grid-template-columns:1fr}
  section{break-inside:avoid}
  .flow-track{min-width:0;grid-template-columns:repeat(5,1fr)}
}


/* Exit band — the document used to dead-end with no route to the practice. */
.doc-exit{background:var(--ink-2);border-top:1px solid var(--on-ink-rule);
  padding:clamp(34px,5vw,56px) 0}
.doc-exit .wrap{max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,4.5vw,52px)}
.doc-exit p{color:var(--on-ink-2);max-width:60ch;margin:0 0 1.1rem;font-size:1.02rem}
.doc-exit .cta-actions{display:flex;gap:.7rem;flex-wrap:wrap}

/* One sans throughout; numbers align on tabular figures, not on a monospace. */
.dose, .mme, td.dose, td.mme, .vis-fee, .refs li::before, .mh-facts dd,
.toc a .n, .sec-n { font-variant-numeric: tabular-nums; letter-spacing: 0; }
.vis-code, .badge, .kicker, .eyebrow, .dg-y { text-transform: none; letter-spacing: .03em; }
