:root{--ink:#1a1a1a;--ink-light:#4a4a4a;--ink-lighter:#7a7a7a;--ink-faint:#b0b0b0;--bg:#fffff8;--bg-warm:#fafaf2;--bg-panel:#f5f4ee;--bg-card:#f7f6f0;--rule:#e0ddd4;--rule-strong:#c8c4b8;--accent:#8b0000;--accent-muted:#b85450;--blue:#5a7a9a;--gold:#c9a227;--green:#5a8a5a;--teal:#4a9a7a;--purple:#7a6a9a;--sienna:#9a7a6a;--serif:'Crimson Pro',Georgia,serif;--sans:'Source Sans 3',system-ui,sans-serif;--mono:'JetBrains Mono',ui-monospace,monospace}
*{margin:0;padding:0;box-sizing:border-box}
html{background:var(--bg);color:var(--ink);font-family:var(--serif);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}
body{min-height:100vh;display:flex;flex-direction:column}
a{color:inherit;text-decoration:none}
.wrap{max-width:1180px;margin:0 auto;padding:0 28px;width:100%}
code,kbd,.mono{font-family:var(--mono);font-size:.86em}
kbd{border:1px solid var(--rule-strong);border-radius:3px;padding:0 5px;background:var(--bg-panel);font-size:11px}

/* masthead */
.masthead{border-bottom:1px solid var(--rule);background:var(--bg);position:sticky;top:0;z-index:20}
.masthead-row{display:flex;align-items:center;gap:14px;height:52px;flex-wrap:wrap}
.wordmark{font-family:var(--serif);font-weight:300;font-size:19px;letter-spacing:-.2px;white-space:nowrap}
.wordmark span{font-weight:500}
.divider{color:var(--ink-faint)}
.product{font-family:var(--sans);font-weight:600;font-size:12px;letter-spacing:1.8px;text-transform:uppercase;color:var(--ink-light);white-space:nowrap}
.product .ver{font-family:var(--mono);font-weight:400;letter-spacing:0;text-transform:none;color:var(--ink-lighter);margin-left:6px}
.tabs{display:flex;gap:2px;margin-left:auto;flex-wrap:wrap}
.tabs a{font-family:var(--sans);font-size:13px;padding:5px 10px;border-radius:4px;color:var(--ink-light)}
.tabs a:hover{background:var(--bg-panel)}
.tabs a.active{background:var(--ink);color:var(--bg)}
.search-btn{font-family:var(--sans);font-size:12px;color:var(--ink-lighter);border:1px solid var(--rule);background:var(--bg-warm);border-radius:5px;padding:5px 8px;display:flex;gap:10px;align-items:center;cursor:pointer}
.masthead-meta{font-family:var(--sans);font-size:11.5px;color:var(--ink-lighter);padding-bottom:6px;letter-spacing:.2px}

/* page */
.page{flex:1;padding-top:28px;padding-bottom:60px;display:grid;grid-template-columns:220px 1fr;gap:40px}
.page.single{grid-template-columns:1fr}
.side{position:sticky;top:86px;align-self:start;font-family:var(--sans);font-size:13px;max-height:calc(100vh - 100px);overflow:auto}
.side h4{font-size:10.5px;letter-spacing:2.4px;text-transform:uppercase;font-weight:600;color:var(--ink-light);margin:0 0 8px}
.side a{display:block;padding:5px 8px;border-left:2px solid transparent;color:var(--ink-light);border-radius:0 4px 4px 0}
.side a:hover{background:var(--bg-panel)}
.side a.active{border-left-color:var(--accent);color:var(--ink);background:var(--bg-warm)}
.side a .n{color:var(--ink-faint);margin-right:6px;font-family:var(--mono);font-size:11px}
.side .count{display:block;color:var(--ink-faint);font-family:var(--mono);font-size:10.5px;margin-top:1px}
.side .group{margin-top:14px}
.side .muted{color:var(--ink-lighter);font-size:12px;line-height:1.5;margin-top:18px;padding:10px;border-top:1px solid var(--rule)}

h1.title{font-family:var(--serif);font-weight:300;font-size:34px;line-height:1.15;letter-spacing:-.4px;margin-bottom:6px}
.lede{font-size:17px;color:var(--ink-light);max-width:70ch;margin-bottom:26px}
.eyebrow{font-family:var(--sans);font-size:10.5px;letter-spacing:2.6px;text-transform:uppercase;font-weight:600;color:var(--ink-light)}
.rule{border:none;border-top:2.5px solid var(--ink);margin:10px 0 18px}
.rule.thin{border-top:1px solid var(--rule)}
section.block{margin-bottom:54px;scroll-margin-top:90px}
section.block h2{font-family:var(--serif);font-weight:400;font-size:26px;line-height:1.2;margin:4px 0 10px}
section.block h3{font-family:var(--sans);font-weight:600;font-size:13px;letter-spacing:1.4px;text-transform:uppercase;color:var(--ink-light);margin:24px 0 8px}
section.block p{max-width:74ch;margin-bottom:10px}
.note{font-family:var(--sans);font-size:13.5px;color:var(--ink-light);background:var(--bg-panel);border-left:3px solid var(--rule-strong);padding:10px 14px;margin:12px 0;max-width:78ch}
.note.warn{border-left-color:var(--gold)}
.note.stop{border-left-color:var(--accent)}
.note b{color:var(--ink)}

/* steps */
.steps{list-style:none;margin:6px 0 0;max-width:80ch}
.steps li{display:grid;grid-template-columns:52px 1fr 150px;gap:14px;padding:10px 0;border-top:1px solid var(--rule);align-items:start}
.steps li:last-child{border-bottom:1px solid var(--rule)}
.steps .num{font-family:var(--mono);font-size:12px;color:var(--ink-lighter);padding-top:3px}
.steps .act{font-size:15.5px}
.steps .act .detail{display:block;font-family:var(--sans);font-size:12.5px;color:var(--ink-lighter);margin-top:3px}
.steps .sys{font-family:var(--sans);font-size:11px;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-light);text-align:right;padding-top:4px}
.steps .sys a{border-bottom:1px dotted var(--ink-faint)}
.sys-auto{color:var(--green)!important}.sys-manual{color:var(--sienna)!important}.sys-ext{color:var(--blue)!important}

/* tables */
table.t{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:13.5px;margin:8px 0 16px}
table.t th{text-align:left;font-size:10.5px;letter-spacing:1.6px;text-transform:uppercase;color:var(--ink-light);font-weight:600;padding:6px 10px 6px 0;border-bottom:1.5px solid var(--ink)}
table.t td{padding:7px 10px 7px 0;border-bottom:1px solid var(--rule);vertical-align:top}
table.t td:first-child{white-space:nowrap}
table.t code{font-size:12px}
table.t.compact td,table.t.compact th{padding:4px 8px 4px 0;font-size:12.5px}
.tag{display:inline-block;font-family:var(--sans);font-size:10.5px;letter-spacing:1px;text-transform:uppercase;padding:1px 6px;border:1px solid var(--rule-strong);border-radius:3px;color:var(--ink-light);margin-right:4px;white-space:nowrap}
.tag.on{border-color:var(--green);color:var(--green)}
.tag.off{border-color:var(--accent-muted);color:var(--accent-muted)}
.tag.flag{border-color:var(--gold);color:#8a6d10}
.tag.ext{border-color:var(--blue);color:var(--blue)}

/* cards grid */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin:10px 0 20px}
.card{border:1px solid var(--rule);background:var(--bg-card);padding:12px 14px;border-radius:4px}
.card h4{font-family:var(--sans);font-weight:600;font-size:13px;margin-bottom:4px}
.card .sub{font-family:var(--sans);font-size:12px;color:var(--ink-lighter);margin-bottom:6px}
.card p{font-size:14px;color:var(--ink-light);margin:0}
.card .k{font-family:var(--mono);font-size:11px;color:var(--ink-lighter)}
.card.dead{opacity:.7;border-style:dashed}

/* status pills */
.flow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0 14px;font-family:var(--sans);font-size:12.5px}
.flow .st{border:1px solid var(--rule-strong);background:var(--bg-card);padding:3px 9px;border-radius:3px}
.flow .arr{color:var(--ink-faint)}

/* charts */
.chart-grid{display:grid;grid-template-columns:1fr;gap:30px}
.chart{border:1px solid var(--rule);background:#fff;padding:14px;border-radius:4px;overflow:auto}
.chart svg{max-width:100%;height:auto;display:block;margin:0 auto}
a.chart-link{display:block;position:relative;cursor:zoom-in;color:inherit}
a.chart-link:hover{border-color:var(--rule-strong)}
a.chart-link:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.chart-hint{position:absolute;right:10px;bottom:8px;font-family:var(--sans);font-size:11px;color:var(--ink-lighter);background:rgba(255,255,248,.9);padding:2px 7px;border:1px solid var(--rule);border-radius:3px;opacity:0;transition:opacity .15s}
a.chart-link:hover .chart-hint{opacity:1}
.chart-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;gap:12px;flex-wrap:wrap}
.chart-head h2{font-size:22px;font-weight:400}
.chart-head .k{font-family:var(--sans);font-size:12px;color:var(--ink-lighter)}
.chart-head a.dl{font-family:var(--sans);font-size:12px;color:var(--blue);border-bottom:1px dotted}
.legend{font-family:var(--sans);font-size:12px;color:var(--ink-light);margin-top:8px;display:flex;gap:16px;flex-wrap:wrap}

/* roles */
.role{border:1px solid var(--rule);border-radius:4px;margin-bottom:22px;background:var(--bg)}
.role-head{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px 16px;background:var(--bg-card);border-bottom:1px solid var(--rule);cursor:pointer}
.role-head h3{font-family:var(--serif);font-weight:400;font-size:20px;margin:0}
.role-head .who{font-family:var(--sans);font-size:12.5px;color:var(--ink-light)}
.role-head .stats{font-family:var(--mono);font-size:11.5px;color:var(--ink-lighter);text-align:right;white-space:nowrap}
.role-body{padding:4px 16px 12px}
.role-body.collapsed{display:none}
.phase{margin:12px 0 4px;font-family:var(--sans);font-weight:600;font-size:11px;letter-spacing:1.6px;text-transform:uppercase;color:var(--ink-light)}
.phase .count{font-family:var(--mono);font-weight:400;color:var(--ink-faint);margin-left:6px}
.tasks{list-style:none}
.tasks li{display:grid;grid-template-columns:1fr 230px 150px;gap:12px;padding:6px 0;border-top:1px solid var(--rule);font-size:14.5px;align-items:baseline}
.tasks li .trig{font-family:var(--sans);font-size:12.5px;color:var(--ink-lighter)}
.tasks li .tool{font-family:var(--sans);font-size:11px;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-light);text-align:right}
.tasks li.esc .trig::before{content:"ESC";font-family:var(--mono);font-size:9.5px;color:var(--accent);border:1px solid var(--accent-muted);border-radius:2px;padding:0 3px;margin-right:6px}
.role-filters{display:flex;gap:6px;margin:0 0 16px;font-family:var(--sans);font-size:12.5px;flex-wrap:wrap}
.role-filters button{border:1px solid var(--rule-strong);background:var(--bg-card);padding:4px 10px;border-radius:4px;cursor:pointer;font:inherit;color:var(--ink-light)}
.role-filters button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}

/* graph */
.graph-wrap{border:1px solid var(--rule);background:#fff;border-radius:4px;height:72vh;min-height:520px;position:relative;overflow:hidden}
.graph-wrap svg{width:100%;height:100%}
.graph-ui{position:absolute;top:10px;left:10px;font-family:var(--sans);font-size:12px;display:flex;gap:6px;flex-wrap:wrap;max-width:80%}
.graph-ui button{border:1px solid var(--rule-strong);background:var(--bg);border-radius:3px;padding:2px 8px;font:inherit;cursor:pointer;color:var(--ink-light)}
.graph-ui button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.graph-info{position:absolute;right:10px;bottom:10px;font-family:var(--sans);font-size:12px;color:var(--ink-light);background:rgba(255,255,248,.92);border:1px solid var(--rule);padding:8px 10px;max-width:320px;border-radius:3px}
.graph-info b{display:block;font-size:13px}

/* search */
.search-overlay{position:fixed;inset:0;background:rgba(26,26,26,.35);z-index:50;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh}
.search-overlay[hidden]{display:none}
.search-box{width:min(720px,92vw);background:var(--bg);border:1px solid var(--rule-strong);border-radius:6px;box-shadow:0 10px 30px rgba(0,0,0,.15);overflow:hidden}
.search-box input{width:100%;font:15px var(--sans);padding:14px 16px;border:none;border-bottom:1px solid var(--rule);background:var(--bg);outline:none;color:var(--ink)}
#search-results{list-style:none;max-height:55vh;overflow:auto}
#search-results li{padding:9px 16px;border-bottom:1px solid var(--rule);font-family:var(--sans);font-size:13.5px;cursor:pointer}
#search-results li.sel,#search-results li:hover{background:var(--bg-panel)}
#search-results li .cat{font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--ink-lighter);margin-right:8px}
#search-results li .snip{display:block;color:var(--ink-lighter);font-size:12.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-hint{font-family:var(--sans);font-size:11px;color:var(--ink-lighter);padding:6px 16px;border-top:1px solid var(--rule)}

.foot{font-family:var(--sans);font-size:12px;color:var(--ink-lighter);border-top:1px solid var(--rule);padding:14px 28px 30px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.changelog{font-family:var(--sans);font-size:13px;color:var(--ink-light)}
.changelog li{margin:3px 0 3px 18px}

@media (max-width:900px){.page{grid-template-columns:1fr}.side{position:static;max-height:none;margin-bottom:20px}.steps li{grid-template-columns:44px 1fr}.steps .sys{grid-column:2;text-align:left;padding-top:0}.tasks li{grid-template-columns:1fr}.tasks li .tool{text-align:left}.masthead-row{height:auto;padding:8px 0}}
@media print{.masthead,.side,.search-btn,.foot{display:none}.page{grid-template-columns:1fr;padding-top:0}section.block{break-inside:avoid}}
