:root{--living-surface:var(--sl-color-gray-6);--living-surface-2:var(--sl-color-gray-5);--living-border:var(--sl-color-hairline);--living-text:var(--sl-color-text);--living-muted:var(--sl-color-gray-3);--living-accent:var(--sl-color-text-accent);--living-accent-soft:var(--sl-color-accent-low);--living-warn:var(--sl-color-orange-high);--living-warn-soft:var(--sl-color-orange-low);--living-arrange:#94a3b8;--living-act:#60a5fa;--living-assert:#4ade80;--living-code-bg:#16171c;--hl-k:#c678dd;--hl-s:#98c379;--hl-n:#d19a66;--hl-c:#6b717d;--hl-t:#e5c07b;--hl-f:#61afef;--hl-l:#56b6c2;--living-radius:.75rem;--living-mono:var(--__sl-font-mono);&:has(.living){--sl-content-width:62rem}}:root[data-theme=light]{--living-arrange:#64748b;--living-act:#3b82f6;--living-assert:#16a34a;--living-code-bg:#f7f7fa;--hl-k:#a626a4;--hl-s:#3d8b3d;--hl-n:#986801;--hl-c:#a0a1a7;--hl-t:#b76e00;--hl-f:#3b6fd8;--hl-l:#0184bc}.living,.living-tooltip,.living-lightbox{color:var(--living-text);font-size:var(--sl-text-sm);line-height:1.55;& a{color:inherit}& code{font-family:var(--living-mono);font-size:.88em}& p{margin:0}& p+p{margin-top:.5em}& .muted{color:var(--living-muted)}}.feature-icon{object-fit:contain;flex:none}.letter-icon{width:var(--size);height:var(--size);background:var(--living-accent-soft);color:var(--living-accent);font-weight:800;font-size:calc(var(--size) * .5);border-radius:28%;place-items:center;display:inline-grid}.feature-head{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:24px;display:flex}.stats{color:var(--living-muted)}.view-switch{background:var(--sl-color-gray-6);border:1px solid var(--sl-color-hairline);border-radius:.5rem;flex-wrap:wrap;gap:.125rem;margin-left:auto;padding:.25rem;display:flex;& a{white-space:nowrap;font-size:var(--sl-text-xs);color:var(--sl-color-gray-3);border-radius:.375rem;padding:.25rem .75rem;font-weight:600;text-decoration:none;@media (hover:hover){&:hover{color:var(--sl-color-white)}}}& a[aria-current=page]{background:var(--sl-color-text-accent);color:var(--sl-color-text-invert)}}.feature-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.feature-card{background:var(--living-surface);border:1px solid var(--living-border);border-radius:var(--living-radius);flex-direction:column;gap:10px;padding:14px;text-decoration:none;transition:border-color .15s,background-color .15s,transform .15s;display:flex;@media (hover:hover){&:hover{border-color:color-mix(in srgb, var(--living-accent) 60%, var(--living-border));background:color-mix(in srgb, var(--living-accent) 5%, var(--living-surface));transform:translateY(-1px)}}&:focus-visible{outline:2px solid var(--living-accent);outline-offset:2px}}.feature-card-head{align-items:center;gap:10px;min-width:0;display:flex;& .letter-icon{border-radius:10px;font-size:17px}}.feature-card-label{font-size:15px;font-weight:700;line-height:1.25}.feature-card-stats{flex-wrap:wrap;gap:4px;display:flex;& span{background:var(--living-surface-2);color:var(--living-muted);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11.5px;font-weight:600}}.feature-card-coverage{color:var(--living-muted);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:8px;margin-top:auto;font-size:11.5px;display:flex}.coverage-meter{background:linear-gradient(to right, var(--living-assert) var(--coverage), transparent var(--coverage)), var(--living-border);border-radius:999px;flex:1;height:4px}.e2e-toolbar{background:var(--living-surface);border:1px solid var(--living-border);border-radius:var(--living-radius);flex-wrap:wrap;align-items:center;gap:8px 24px;margin-bottom:24px;padding:10px 14px;font-size:13px;display:flex}.legend{flex-wrap:wrap;gap:4px 14px;margin:0;padding:0;list-style:none;display:flex;& li{align-items:center;gap:6px;font-weight:600;display:flex}& small{color:var(--living-muted);font-size:11px;font-weight:400}& .phase-icon{width:14px}}.legend .legend-note{color:var(--living-muted);font-size:12px;font-weight:400}.toggles{flex-wrap:wrap;gap:4px 16px;display:flex}.toggle{cursor:pointer;align-items:center;gap:6px;display:flex}.route{background:var(--living-surface);border:1px solid var(--living-border);border-radius:var(--living-radius);min-width:0;padding:14px 18px}.route-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex;& .file-link{margin-left:auto}}.route-path{margin:0;font-size:15px;font-weight:700;& code{font-size:1em}}.route-param{color:var(--living-accent)}.routes-table{overflow-wrap:normal;& :is(th,td){white-space:nowrap}& wbr{display:none}& details[open]{width:max-content;max-width:32rem}& details>:not(summary){white-space:normal}}details.route-tests{min-width:14rem;font-size:13px;& summary{cursor:pointer}& ul{margin:4px 0 0;padding-left:16px}}.chip{background:var(--living-surface-2);border:1px solid var(--living-border);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;margin:2px 4px 2px 0;padding:1px 8px;font-size:12px;text-decoration:none;display:inline-flex}.file-chip{font-family:var(--living-mono);font-size:11.5px;@media (hover:hover){&:hover{border-color:var(--living-accent);color:var(--living-accent)}}}.sl-badge{white-space:nowrap}.living .file-link{font-family:var(--living-mono);color:var(--living-muted);font-size:12px;text-decoration:none;@media (hover:hover){&:hover{color:var(--living-accent);text-decoration:underline}}}.graph-card,.module,.test{background:var(--sl-color-gray-6);border:1px solid var(--sl-color-hairline);border-radius:var(--living-radius)}.graph-card{margin:0 0 24px;padding:16px 20px;& figcaption{margin-bottom:8px;font-weight:700}}.graph-scroll{overflow-x:auto}.graph{width:100%;min-width:600px;height:auto;font-size:13px;display:block;& .column-title{fill:var(--living-muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:700}& .node rect{fill:var(--living-surface-2);stroke:var(--living-border)}& .node-self rect{fill:var(--living-accent-soft);stroke:var(--living-accent)}& .node-label{fill:var(--living-text);font-weight:600}& .node-sublabel{fill:var(--living-muted);font-size:11px}& .node{cursor:default;transition:opacity .15s}& .edge{fill:none;stroke:var(--living-muted);stroke-opacity:.45;stroke-width:1.4px;transition:opacity .15s}& .arrowhead{fill:var(--living-muted)}&.focusing .node,&.focusing .edge{opacity:.18}&.focusing .is-related{opacity:1}&.focusing .edge.is-related{stroke:var(--living-accent);stroke-opacity:1;stroke-width:2px}}.module{margin-bottom:1.5rem;padding:1.25rem 1.5rem}.module-head{flex-wrap:wrap;align-items:center;gap:.625rem;display:flex;& h2{font-size:var(--sl-text-2xl);color:var(--sl-color-white);margin:0;font-weight:600}& .file-link{margin-left:auto}}.overview{border-left:3px solid var(--sl-color-text-accent);background:var(--sl-color-accent-low);border-radius:0 .5rem .5rem 0;margin-top:.625rem;padding:.75rem 1rem}.living .missing{color:var(--living-muted);margin-top:10px;font-style:italic}.module-facts{font-size:var(--sl-text-xs);grid-template-columns:max-content 1fr;gap:.375rem .75rem;margin:.75rem 0 0;display:grid;& dt{color:var(--sl-color-gray-3);padding-top:2px;font-weight:600}& dd{margin:0}}.living .section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--living-muted);margin:26px 0 4px;font-size:11px;font-weight:700}.export{border-top:1px solid var(--living-border);padding:16px 0;.section-title+&{border-top:none}}.export-head{align-items:center;gap:8px;display:flex;& .file-link{margin-left:auto}}.export-name{color:var(--living-text);margin:0;font-size:15px;font-weight:700}.kind{text-transform:uppercase;letter-spacing:.05em;color:var(--living-accent);background:var(--living-accent-soft);border-radius:5px;padding:1px 6px;font-size:10.5px;font-weight:700;&.kind-type,&.kind-interface{color:var(--hl-t);background:color-mix(in srgb, var(--hl-t) 14%, transparent)}}.doc{margin-top:6px}:is(.doc,.overview,.step-note,.tooltip-doc) code{background:var(--living-surface-2);border-radius:4px;padding:0 4px}.doc-tags{margin:6px 0 0;padding:0;font-size:13px;list-style:none;& span{font-family:var(--living-mono);color:var(--living-muted)}& p{display:inline}}pre.code,.living code{font-variant-ligatures:none}pre.code{background:var(--living-code-bg);border:1px solid var(--living-border);font:12.5px / 1.6 var(--living-mono);tab-size:2;border-radius:8px;margin:10px 0 0;padding:12px 14px;overflow-x:auto;& .c{color:var(--hl-c);font-style:italic}& .k{color:var(--hl-k)}& .s{color:var(--hl-s)}& .n{color:var(--hl-n)}& .t{color:var(--hl-t)}& .f{color:var(--hl-f)}& .l{color:var(--hl-l)}}details.source{margin-top:8px;& summary{cursor:pointer;color:var(--living-muted);font-size:12px;font-weight:600}@media (hover:hover){& summary:hover{color:var(--living-accent)}}}.unit-tests{margin-top:10px;font-size:13px;& a{text-decoration:none}@media (hover:hover){& a:hover{color:var(--living-accent);text-decoration:underline}}}.unit-tests-title{color:var(--living-muted);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;font-size:11px;font-weight:700;@media (hover:hover){&:hover{color:var(--living-accent)}}[open]>&{margin-bottom:2px}}.unit-test-list{columns:2 320px;column-gap:24px;margin:0;padding:0;list-style:none;&>li{break-inside:avoid;padding:1px 0 1px 20px;position:relative}&>li:before{content:"✓";color:var(--living-assert);font-weight:800;position:absolute;left:2px}}.unit-test-heading{font-weight:650}.unit-test-group{& ul{border-left:2px solid var(--living-border);margin:1px 0 4px;padding:0 0 0 12px;list-style:none}& li{padding:1px 0}}.usages{gap:4px;margin-top:10px;font-size:13px;display:grid}.usage-row{grid-template-columns:112px minmax(0,1fr);align-items:baseline;gap:8px;display:grid}.usage-kind{color:var(--living-muted);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:700}.living .test-only{margin-top:18px;font-size:13px}.spec+.spec{margin-top:40px}.spec-head{margin-bottom:8px}.group-title{letter-spacing:-.01em;color:var(--living-text);margin:28px 0 12px;font-size:20px;.spec-head+.test-group>&,.spec-head+.test-group>.group-summary>&{margin-top:0}&.group-depth-2{margin-top:20px;font-size:17px}&.group-depth-3,&.group-depth-4{font-size:15px}&:is(.group-depth-2,.group-depth-3,.group-depth-4):before{content:"› ";color:var(--living-muted)}.group-summary>&{align-items:center;gap:.6em;display:flex}.group-summary>&:before{content:"";border-right:2px solid var(--living-muted);border-bottom:2px solid var(--living-muted);flex-shrink:0;width:.4em;height:.4em;margin-left:.15em;transition:rotate .15s,translate .15s;translate:-20%;rotate:-45deg}[open]>.group-summary>&:before{translate:0 -20%;rotate:45deg}.test-group:not(:has(.test))>&{margin-bottom:0}}.group-summary{cursor:pointer;list-style:none;&::-webkit-details-marker{display:none}@media (hover:hover){&:hover .group-title{color:var(--living-accent)}}}.living .group-options{color:var(--living-muted);margin:-6px 0 12px;font-size:13px}.group-doc,.test-doc{color:var(--living-muted);margin:-6px 0 12px;& p{margin:0}}.chapters{gap:20px;display:grid}.chapter{gap:8px;display:grid}.chapter-title{align-items:center;gap:10px;margin:0;font-weight:650;display:flex}.chapter-text{flex:1}.chapter-number{width:22px;height:22px;color:var(--living-accent);background:color-mix(in srgb, var(--living-accent) 14%, transparent);border-radius:50%;flex:none;place-items:center;font-size:11px;font-weight:800;display:inline-grid}body.outline-only{& .chapter .segments{display:none}& .chapters{gap:8px}}.test{margin-bottom:20px;padding:18px 20px}.test-head{align-items:flex-start;gap:12px;margin-bottom:14px;display:flex;& :is(h3,h4,h5,h6){color:var(--living-text);flex:1;margin:0;font-size:16px}& :is(h3,h4,h5,h6):first-letter{text-transform:uppercase}}.test-meta{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.user{color:var(--actor,var(--living-accent));background:color-mix(in srgb, var(--actor,var(--living-accent)) 15%, transparent);border-radius:999px;align-items:center;padding:0 8px;font-size:12px;font-weight:700;display:inline-flex}.avatar{color:#fff;background:var(--actor,var(--living-arrange));border-radius:50%;flex:none;place-items:center;width:24px;height:24px;font-size:10px;font-weight:800;display:inline-grid}.segments{gap:10px;display:grid}.living .test-routes{color:var(--living-muted);flex-wrap:wrap;align-items:center;gap:6px;margin:-6px 0 12px;font-size:12px;display:flex}.living .route-chip{font-family:var(--living-mono);background:var(--living-surface-2);border:1px solid var(--living-border);color:var(--living-text);border-radius:6px;padding:1px 8px;font-size:11.5px;text-decoration:none;@media (hover:hover){&:hover{border-color:var(--living-accent);color:var(--living-accent)}}}.storyboard{gap:10px;margin-bottom:12px;padding-bottom:4px;display:flex;overflow-x:auto}.storyboard-frame{width:176px;color:var(--living-muted);font:inherit;text-transform:uppercase;letter-spacing:.04em;text-align:left;cursor:zoom-in;background:0 0;border:none;flex:none;gap:4px;padding:0;font-size:11px;font-weight:700;display:grid;& span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}}:is(.storyboard-frame,.divider-shot){& img{aspect-ratio:16/9;object-fit:cover;object-position:top;border:1px solid var(--living-border);background:var(--living-surface-2);border-radius:6px;width:100%;display:block}@media (hover:hover){&:hover img{border-color:var(--living-accent)}}}.divider-shot{cursor:zoom-in;background:0 0;border:none;flex:none;order:3;width:48px;padding:0;& img{border-radius:4px}}.segment{border:1px solid var(--living-border);border-radius:10px;grid-template-columns:92px minmax(0,1fr);display:grid;overflow:clip}.segment-actor{border-color:color-mix(in srgb, var(--actor) 45%, transparent);background:color-mix(in srgb, var(--actor) 5%, var(--living-surface));& .lane{background:color-mix(in srgb, var(--actor) 14%, var(--living-surface));color:var(--actor);border-right-color:color-mix(in srgb, var(--actor) 35%, transparent)}}.lane{text-align:center;background:var(--living-surface-2);border-right:1px solid var(--living-border);color:var(--living-muted);padding:12px 6px;font-size:12px;font-weight:700}.lane-sticky{top:calc(var(--sl-nav-height) + 1rem);flex-direction:column;align-items:center;gap:4px;display:flex;position:sticky}.segment-body{min-width:0;padding:8px 14px 10px}.divider{align-items:center;gap:10px;margin:10px 0 4px;font-size:12px;display:flex;&:after{content:"";border-bottom:1px dashed var(--living-border);flex:1;order:2;align-self:center}}.divider-label{text-transform:uppercase;letter-spacing:.06em;color:var(--living-muted);white-space:nowrap;font-weight:700;&:before{content:"▸ "}}.run{grid-template-columns:58px minmax(0,1fr);gap:8px;padding:4px 0;display:grid;&+&{border-top:1px solid color-mix(in srgb, var(--living-border) 60%, transparent)}}.run-label{text-transform:uppercase;letter-spacing:.06em;color:var(--phase);padding-top:5px;font-size:10.5px;font-weight:800}.phase-arrange{--phase:var(--living-arrange)}.phase-act{--phase:var(--living-act)}.phase-assert{--phase:var(--living-assert)}.steps{margin:0;padding:0;list-style:none;&.nested{border-left:2px solid var(--living-border);margin:2px 0 2px 9px;padding-left:14px}}.step{padding:3px 0}.step-line{align-items:baseline;gap:10px;display:flex}.phase-icon{text-align:center;width:16px;color:var(--phase);flex:none;font-weight:800;.phase-arrange &:before{content:"+"}.phase-act &:before{content:"→"}.phase-assert &:before{content:"✓"}}.step-naming>.step-line{color:var(--living-muted);& .phase-icon:before{content:"=";color:var(--living-muted)}}.step-text strong{font-weight:650}.ref{text-decoration:underline dotted color-mix(in srgb, currentColor 45%, transparent);text-underline-offset:3px;cursor:help;@media (hover:hover){&:hover{text-decoration-color:var(--living-accent);color:var(--living-accent)}}}.living-tooltip{z-index:100;background:var(--living-surface);border:1px solid var(--living-border);pointer-events:none;border-radius:10px;max-width:min(560px,100vw - 24px);padding:10px 12px;font-size:13px;position:fixed;box-shadow:0 12px 32px #0000002e;& pre.code{max-height:280px;margin-top:8px;font-size:11.5px;overflow:hidden}}.tooltip-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex;& code{font-weight:700}& span{color:var(--living-muted);font-family:var(--living-mono);white-space:nowrap;font-size:11px}}.tooltip-doc{margin-top:6px}.living-lightbox{background:var(--living-surface);cursor:zoom-out;border:none;border-radius:12px;max-width:min(1280px,100vw - 32px);padding:0;box-shadow:0 24px 64px #0006;&::backdrop{background:#0009}& img{max-width:100%;max-height:calc(100vh - 120px);display:block}}.lightbox-caption{margin:0;padding:8px 14px;font-size:13px;font-weight:600}.step-note{border-left:2px solid var(--living-border);color:var(--living-muted);margin:4px 0 2px 26px;padding-left:10px;font-size:13px;font-style:italic}.str{color:var(--hl-s)}.num{color:var(--hl-n);font-family:var(--living-mono);font-size:.9em}.const{cursor:help}.tuple:before{content:"(";color:var(--living-muted)}.tuple:after{content:")";color:var(--living-muted)}.kv+.kv:before{content:"· ";color:var(--living-muted)}.key{color:var(--living-muted)}.binds{color:var(--living-muted);font-family:var(--living-mono);font-size:12px}.living code.inline{background:var(--living-surface-2);border-radius:5px;padding:1px 5px;font-size:12px}.living kbd{font-family:var(--living-mono);border:1px solid var(--living-border);background:var(--living-surface);border-bottom-width:2px;border-radius:5px;padding:0 6px;font-size:12px}pre.step-code{margin:4px 0 4px 26px;padding:6px 10px;font-size:11.5px;display:none;body.show-code &{display:block}}@container (width<=40rem){.segment{grid-template-columns:minmax(0,1fr)}.lane{border-right:none;border-bottom:1px solid var(--living-border);padding:6px 10px}.lane-sticky{flex-direction:row;position:static}.run{grid-template-columns:minmax(0,1fr);gap:0}.view-switch{margin-left:0}.usage-row{grid-template-columns:minmax(0,1fr);gap:2px}.chip{white-space:normal;overflow-wrap:anywhere}.test-head{flex-direction:column;gap:6px}.test-meta{justify-content:flex-start}.divider{flex-wrap:wrap;gap:2px 10px;&:after{display:none}}}.living{container-type:inline-size}details.db-relations{margin-block:8px 24px;& summary{cursor:pointer;color:var(--living-muted);font-size:13px;font-weight:600}@media (hover:hover){& summary:hover{color:var(--living-accent)}}& p{font-size:13px}}pre.db-relations-diagram{background:0 0;border:none;justify-content:center;display:flex;overflow-x:auto}.db-reference{white-space:nowrap;font-size:13px}.behaviour-tests{font-size:var(--sl-text-sm)}.access-chip{color:var(--living-text);background:0 0;font-size:11.5px;&.access-write{color:var(--living-warn);background:var(--living-warn-soft);border-color:color-mix(in srgb, var(--living-warn) 40%, transparent)}@media (hover:hover){&:is(a):hover{border-color:var(--living-accent);color:var(--living-accent)}}}.living .repositories-intro{color:var(--living-muted);margin-bottom:20px;& .chip{margin:0}}details.route-data{min-width:18rem;font-size:13px;& summary{cursor:pointer;white-space:nowrap}& ul{margin:2px 0 8px;padding-left:16px}& li{margin:0}}.route-data-title{font-weight:600}.trace-tables{flex-wrap:wrap;margin-top:2px;display:flex}.route-data-via,.route-data-none,.db-unused{color:var(--living-muted)}.db-unused{font-size:13px}.living.routes{gap:12px;margin-block:12px 24px;display:grid}.sl-markdown-content table .chip{white-space:normal}
