:root{color-scheme:light;--ink:#132e2b;--muted:#51615a;--paper:#f4f3eb;--rule:#d5ddd2;--green:#26614e;--lime:#dceaa9}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:1rem}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 "DM Sans",system-ui,sans-serif}a{color:var(--green);text-underline-offset:.2em}button,input{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #367765;outline-offset:4px}.wrap{width:min(1140px,calc(100% - 3rem));margin:auto}.mast{background:#12332a;color:#fafff3}.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem 0;border-bottom:1px solid #50685c}.brand{font-weight:750}.bar a{color:#fafff3}.hero{padding:3.3rem 0 3.7rem;max-width:800px}.kicker,.tag{font-size:.79rem;font-weight:750;letter-spacing:.075em;text-transform:uppercase}.kicker{color:var(--lime)}h1,h2,h3{line-height:1.1;margin:0;font-family:"Instrument Serif",Georgia,serif;font-weight:500}h1{font-size:clamp(3rem,7vw,5.5rem);letter-spacing:-.06em;margin:.65rem 0 1.2rem}h2{font-size:clamp(2.1rem,4vw,3.3rem)}h3{font-size:clamp(1.9rem,3vw,2.55rem)}.hero p{font-size:1.12rem;max-width:640px;color:#e0e9dc}.actions{display:flex;gap:.9rem;flex-wrap:wrap;margin-top:1.55rem}.action{display:inline-block;padding:.55rem .95rem;border:1px solid var(--lime);background:var(--lime);color:var(--ink);border-radius:.4rem;text-decoration:none;font-weight:700}.action.alt{background:transparent;color:var(--lime)}.layout{display:grid;grid-template-columns:230px 1fr;gap:2.2rem;align-items:start;padding-top:2rem;padding-bottom:3rem}.toc{position:sticky;top:1rem;max-height:calc(100vh - 2rem);overflow:auto;padding:0 1rem 0 0;border-right:1px solid var(--rule)}.toc ol{padding-left:1.5rem}.toc li{margin:.35rem 0;font-size:.87rem}.toc a{text-decoration:none}.toc a:hover{text-decoration:underline}.tools{margin:1.2rem 0 1.7rem}.tools input{width:100%;padding:.6rem .85rem;border:1px solid #a5b2a5;border-radius:.4rem;background:#fff}.filters{display:flex;flex-wrap:wrap;gap:.4rem;margin:.6rem 0}.filters button{background:transparent;border:1px solid #a5b2a5;padding:.28rem .7rem;border-radius:2rem;color:var(--ink)}.filters [aria-pressed=true]{background:var(--ink);color:white;border-color:var(--ink)}#count{color:var(--muted);font-size:.88rem}.case,.decision{padding:clamp(1.1rem,3vw,2rem);background:#fffef9;border:1px solid var(--rule);border-radius:.6rem;margin-bottom:1.25rem}.tag{color:var(--green);display:block;margin-bottom:.55rem}.scenario{font-size:1.04rem;color:var(--muted);margin:.65rem 0 1.15rem}dl{margin:0}dt{font-weight:750;margin-top:.9rem}dd{margin:.2rem 0 0}.decision{margin-top:2rem}.decision h3{font-size:1.5rem;margin-top:1.2rem}.decision p{margin:.45rem 0 .8rem}.decision ul{padding-left:1.3rem}footer{border-top:1px solid var(--rule);padding:1.3rem 0 2rem}.screen-only[hidden],article[hidden]{display:none}
@media(max-width:760px){.wrap{width:calc(100% - 1.8rem)}.layout{display:block}.toc{position:static;max-height:none;border:0;padding:0;margin-bottom:1.8rem}.toc ol{columns:2}.hero{padding:2.4rem 0}.bar{font-size:.9rem}}
@media(max-width:420px){.toc ol{columns:1}}
@page{size:letter;margin:.58in .64in}
@media print{html,body{background:#fff;color:#101c15;font-size:10.5pt;line-height:1.38}.wrap{width:100%}.mast{background:white;color:#101c15}.bar,.actions,.tools,.screen-only{display:none!important}.hero{padding:0 0 .16in}.hero p,.kicker{color:#374a3d}h1{font-size:32pt;margin:.13in 0}h2{font-size:23pt}h3{font-size:21pt}.layout{display:block;padding:0}.toc{position:static;border:0;max-height:none;overflow:visible;margin:0 0 .2in}.toc ol{columns:2}.toc li{font-size:9pt}.case,.decision{border:0;border-top:1px solid #aab7aa;border-radius:0;background:white;padding:.16in 0 0;margin:0 0 .22in;break-inside:avoid}article[hidden]{display:block}.case h3,.decision h2{break-after:avoid}.decision{break-inside:auto}.decision h3{break-after:avoid}footer{font-size:9pt;padding:.12in 0}.tag{font-size:8pt}dt{margin-top:.1in}}
.flow{margin:1.1rem 0 1.4rem;padding:.9rem 1rem;background:#f0f5ec;border:1px solid #d2dfd1;border-radius:.5rem}
.flow-head{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.7rem}
.flow figcaption{font-weight:750}
.flow-play{padding:.22rem .6rem;border:1px solid #94b1a2;border-radius:.3rem;background:#fff;color:var(--ink);font-size:.85rem}
.flow-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.35rem;list-style:none;margin:0;padding:0;counter-reset:step}
.flow-step,.flow-exit{position:relative;border:1px solid #bdd0c4;border-radius:.35rem;background:#fff;padding:.5rem;font-size:.89rem;line-height:1.3}
.flow-step::before{counter-increment:step;content:'0' counter(step);display:block;font-size:.72rem;font-weight:800;color:var(--green);margin-bottom:.22rem}
.flow-step:not(:last-child)::after{content:'→';position:absolute;top:50%;left:calc(100% + .2rem);transform:translateY(-50%);font-weight:800;color:var(--green)}
.flow-exits{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-top:.75rem}
.flow-exit strong{display:block;font-size:.77rem;color:var(--green);margin-bottom:.2rem}
.flow-exit:last-child{border-style:dashed}
.flow [data-active]{background:#dceaa9;border-color:#498165;box-shadow:0 0 0 2px #498165;animation:flow-enter .35s ease-out}
@keyframes flow-enter{from{transform:translateY(3px);opacity:.72}to{transform:translateY(0);opacity:1}}
@media(max-width:580px){.flow-steps{grid-template-columns:1fr;gap:1rem}.flow-step:not(:last-child)::after{content:'↓';top:calc(100% + .06rem);left:50%;transform:translateX(-50%)}.flow-exits{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.flow [data-active]{animation:none}}
@media print{.flow{break-inside:avoid;background:#fff}.flow-play{display:none}.flow-steps{grid-template-columns:repeat(4,minmax(0,1fr))}.flow-exits{grid-template-columns:1fr 1fr}.flow [data-active]{background:#fff;box-shadow:none;animation:none}}

.flow{background:#fcfdff;border-color:#cfdce6;padding:.8rem}
.diagram-viewport{overflow-x:auto;scrollbar-color:#7496a1 #edf3f7;scroll-behavior:smooth}
.architecture{display:block;width:100%;height:auto;color:#18354a;font-family:system-ui,sans-serif}
.lane-title{font-weight:750;font-size:10px;letter-spacing:.07em;fill:#254760}
.node-title{font-weight:750;font-size:10.4px;fill:#18354a}
.node-detail{font-size:9.2px;fill:#304b60}
.step-number{font-weight:750;font-size:9px;fill:#fff}
.diagram-note{margin:.4rem .5rem .1rem;color:#385268;font-size:.89rem}
.diagram-hint{display:none;margin:.2rem .5rem .45rem;color:#385268;font-size:.8rem}
.diagram-status{display:block;min-height:1.25em;margin:.3rem .5rem .1rem;color:#215172;font-size:.8rem;font-weight:700}
.flow .diagram-node[data-active],.flow .diagram-edge[data-active]{background:none;box-shadow:none;animation:none}
.diagram-node[data-active] .node-panel{stroke-width:3;filter:drop-shadow(0 2px 3px #32648560)}
.diagram-edge[data-active] polyline{stroke-width:3;animation:diagram-dash .55s linear infinite}
@keyframes diagram-dash{to{stroke-dashoffset:-14}}
@media screen and (max-width:1080px){.architecture{min-width:680px}.diagram-hint{display:block}}
@media(prefers-reduced-motion:reduce){.diagram-viewport{scroll-behavior:auto}.diagram-edge[data-active] polyline{animation:none}}
@media print{.architecture{min-width:0}.diagram-status,.diagram-hint{display:none}.diagram-viewport{overflow:visible}.diagram-node[data-active] .node-panel{filter:none;stroke-width:1}.diagram-edge[data-active] polyline{animation:none;stroke-width:2}}
