@layer components{.case-layout{gap:2.5rem;display:grid}.case-layout-main{gap:5rem;min-width:0;display:grid}@media (min-width:768px){.case-layout-main{gap:6.5rem}}@media (min-width:1280px){.case-layout{grid-template-columns:minmax(0,1fr) 14rem;column-gap:4rem}.case-layout-index{top:calc(var(--header-h) + 2rem);grid-area:1/2;align-self:start;position:sticky}.case-layout-main{grid-area:1/1}.case-wide{margin-right:-18rem}}.case-chapter{scroll-margin-top:calc(var(--header-h) + 1.5rem)}.case-chapter-head{border-top:1px solid var(--color-line);grid-template-columns:2.25rem minmax(0,1fr);align-items:baseline;padding-top:1.1rem;display:grid;position:relative}.case-chapter-head:before{content:"";background:var(--color-signal);width:2.25rem;height:1px;position:absolute;top:-1px;left:0}.case-chapter-no{font:500 .75rem/1 var(--font-mono);letter-spacing:.1em;color:var(--color-signal)}.case-chapter-kicker{grid-column:2;margin-top:.7rem}.case-problem>p:first-child{color:var(--color-fg);font-size:1.2rem;line-height:1.65}.case-spec{border:1px solid var(--color-line);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-surface) 80%, transparent)}.case-spec>div{border-top:1px solid var(--color-line);grid-template-columns:6rem minmax(0,1fr);align-items:baseline;gap:1rem;padding:.7rem 1rem;display:grid}.case-spec>div:first-child{border-top:0}.case-spec dt{font:400 .6875rem/1.4 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-fg-dim)}.case-spec dd{color:var(--color-fg);font-size:.9375rem;line-height:1.45}.case-spec>.case-spec-stack{grid-template-columns:minmax(0,1fr);gap:.6rem}.case-index-link{color:var(--color-fg-dim);transition:color var(--dur-fast) ease, border-color var(--dur-fast) ease;border-left:1px solid #0000;gap:.75rem;margin-left:-1px;padding:.4rem .5rem .4rem 0;line-height:1.35;display:flex}.case-index-link:hover{color:var(--color-fg)}.case-index-link[data-state=read]{color:var(--color-fg-muted)}.case-index-link[data-state=current]{color:var(--color-fg);border-left-color:var(--color-signal)}.case-index-no{width:1.25rem;font:500 .625rem/1.4 var(--font-mono);letter-spacing:.06em;flex-shrink:0;padding-top:.15rem}.case-index-link[data-state=current] .case-index-no{color:var(--color-signal)}.case-index-sheet[open] .case-index-chevron{transform:rotate(180deg)}.case-rail{transition:opacity var(--dur-base) ease, visibility var(--dur-base)}.case-rail[data-occluded]{opacity:0;visibility:hidden}.case-neighbour{border-top:1px solid var(--color-line);transition:border-color var(--dur-fast) ease;padding-top:1rem;display:block}.case-neighbour:hover{border-top-color:var(--color-signal)}.arch{--nh-overview:62px;--nh-detailed:84px;--edge:color-mix(in srgb, var(--color-fg-dim) 55%, var(--color-line-strong));border:1px solid var(--color-line);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-surface) 82%, transparent);container-type:inline-size}.arch[data-tech=none]{--nh-detailed:var(--nh-overview)}.arch-toolbar{border-bottom:1px solid var(--color-line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;padding:.65rem .75rem .65rem 1rem;display:flex}.arch-dir:after{content:"· request ↓"}.arch-seg{border:1px solid var(--color-line);border-radius:3px;padding:2px;display:inline-flex}.arch-seg button{min-height:32px;font:500 .625rem/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--color-fg-dim);cursor:pointer;transition:color var(--dur-fast) ease, background-color var(--dur-fast) ease;border-radius:2px;padding:0 .75rem}.arch-seg button:hover{color:var(--color-fg)}.arch-seg button[aria-pressed=true]{color:var(--color-fg);background:var(--color-raised);box-shadow:inset 0 0 0 1px var(--color-line-strong)}.arch-flowbar{top:var(--header-h);z-index:5;border-bottom:1px solid var(--color-line);background:color-mix(in srgb, var(--color-void) 94%, transparent);flex-wrap:wrap;align-items:center;gap:.6rem 1.5rem;padding:.6rem .75rem .6rem 1rem;display:flex;position:sticky}.arch-flow-btn{text-align:left;min-height:32px;color:var(--color-fg-muted);border:1px solid var(--color-line);cursor:pointer;transition:color var(--dur-fast) ease, border-color var(--dur-fast) ease, background-color var(--dur-fast) ease;border-radius:2px;padding:.3rem .65rem;font-size:.8125rem;line-height:1.3}.arch-flow-btn:hover{color:var(--color-fg);border-color:var(--color-line-strong)}.arch-flow-btn[aria-pressed=true]{color:var(--color-fg);border-color:var(--color-signal);background:color-mix(in srgb, var(--color-signal) 10%, transparent)}.arch-stepper{flex:17rem;align-items:center;gap:.5rem;min-width:0;display:flex}.arch-icon-btn{width:32px;height:32px;color:var(--color-fg-muted);border:1px solid var(--color-line-strong);cursor:pointer;transition:color var(--dur-fast) ease, border-color var(--dur-fast) ease;border-radius:2px;flex-shrink:0;place-items:center;display:inline-grid}.arch-icon-btn:hover:not(:disabled){color:var(--color-fg);border-color:var(--color-fg-dim)}.arch-icon-btn:disabled{opacity:.35;cursor:default}.arch-step-count{font:500 .75rem/1 var(--font-mono);letter-spacing:.04em;color:var(--color-fg);font-variant-numeric:tabular-nums}.arch-step-now{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--color-fg);font-size:.875rem;font-weight:600;overflow:hidden}.arch-scroll{overscroll-behavior-x:contain;overflow-x:auto}.arch-canvas{--h:0;--dir:v;--gap-layer:52px;--gap-cross:12px;--pad:22px;--min-slot:8.5rem;--bi:9px;--n-x:calc(var(--cols) * var(--h) + var(--rows) * (1 - var(--h)));--n-y:calc(var(--rows) * var(--h) + var(--cols) * (1 - var(--h)));--gap-x:calc(var(--gap-layer) * var(--h) + var(--gap-cross) * (1 - var(--h)));--gap-y:calc(var(--gap-cross) * var(--h) + var(--gap-layer) * (1 - var(--h)));min-width:calc(var(--n-x) * var(--min-slot));height:calc(var(--pad) * 2 + var(--n-y) * var(--nh) + (var(--n-y) - 1) * var(--gap-y));background-color:color-mix(in srgb, var(--color-void) 55%, transparent);background-position:-1px -1px;position:relative}.arch[data-level=overview] .arch-canvas{--nh:var(--nh-overview)}.arch[data-level=detailed] .arch-canvas{--nh:var(--nh-detailed)}@container (min-width:480px){.arch[data-band=s] .arch-canvas{--h:1;--dir:h;--gap-layer:72px;--gap-cross:26px;--pad:30px;--min-slot:9rem}.arch[data-band=s] .arch-dir:after{content:"· request →"}}@container (min-width:680px){.arch[data-band=m] .arch-canvas{--h:1;--dir:h;--gap-layer:64px;--gap-cross:26px;--pad:30px;--min-slot:8.75rem}.arch[data-band=m] .arch-dir:after{content:"· request →"}}@container (min-width:860px){.arch[data-band=l] .arch-canvas{--h:1;--dir:h;--gap-layer:60px;--gap-cross:26px;--pad:30px;--min-slot:8.5rem}.arch[data-band=l] .arch-dir:after{content:"· request →"}}@container (min-width:1080px){.arch[data-band=l] .arch-canvas,.arch[data-band=m] .arch-canvas{--gap-layer:76px}}.arch-node,.arch-boundary{position:absolute}.arch-node{--ix:calc(var(--c) * var(--h) + var(--r) * (1 - var(--h)));--iy:calc(var(--r) * var(--h) + var(--c) * (1 - var(--h)));left:calc(var(--ix) * 100% / var(--n-x) + var(--gap-x) / 2);top:calc(var(--pad) + var(--iy) * (var(--nh) + var(--gap-y)));width:calc(100% / var(--n-x) - var(--gap-x));height:var(--nh);z-index:2;text-align:left;color:var(--color-fg);background:var(--color-surface);border:1px solid var(--color-line-strong);cursor:pointer;scroll-margin:calc(var(--header-h) + 4.5rem) 1rem 1.5rem;transition:border-color var(--dur-fast) ease, background-color var(--dur-fast) ease, opacity var(--dur-base) ease;border-radius:3px;flex-direction:column;justify-content:center;gap:.3rem;padding:.45rem .7rem .45rem .8rem;display:flex;overflow:hidden}.arch-node:before{content:"";background:var(--tone);opacity:.75;width:2px;position:absolute;top:0;bottom:0;left:0}.arch-node:hover{border-color:var(--color-fg-dim);background:var(--color-raised)}.arch-node:focus-visible{outline:2px solid var(--color-signal);outline-offset:2px}.arch-node[data-kind=external],.arch-node[data-group]{border-style:dashed}.arch-node-kind{min-width:0;font:500 .5625rem/1.2 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--tone);align-items:center;gap:.35rem;display:flex}.arch-node-label{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:.8125rem;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.arch-node-tech{font:400 .625rem/1.3 var(--font-mono);white-space:nowrap;text-overflow:ellipsis;color:var(--color-fg-dim);overflow:hidden}.arch-node[data-step] .arch-node-kind{padding-right:1.25rem}.arch-node-step{min-width:17px;height:17px;font:500 .5625rem/1 var(--font-mono);color:var(--color-fg-dim);background:var(--color-void);border:1px solid var(--color-line-strong);border-radius:999px;place-items:center;padding:0 3px;display:grid;position:absolute;top:5px;right:5px}.arch-node[data-state=dim]{opacity:.36}.arch-node[data-state=selected],.arch-node[data-state=current]{border-color:var(--color-signal);background:color-mix(in srgb, var(--color-signal) 10%, var(--color-surface))}.arch-node[data-state=linked]{border-color:color-mix(in srgb, var(--color-signal) 50%, var(--color-line-strong))}.arch-node[data-state=visited] .arch-node-step{color:var(--color-signal);border-color:var(--color-signal)}.arch-node[data-state=current] .arch-node-step{color:var(--color-void);background:var(--color-signal);border-color:var(--color-signal)}.arch-boundary{--x0:calc(var(--c0) * var(--h) + var(--r0) * (1 - var(--h)));--x1:calc(var(--c1) * var(--h) + var(--r1) * (1 - var(--h)));--y0:calc(var(--r0) * var(--h) + var(--c0) * (1 - var(--h)));--y1:calc(var(--r1) * var(--h) + var(--c1) * (1 - var(--h)));left:calc(var(--x0) * 100% / var(--n-x) + var(--gap-x) / 2 - var(--bi));width:calc((var(--x1) - var(--x0) + 1) * 100% / var(--n-x) - var(--gap-x) + 2 * var(--bi));top:calc(var(--pad) + var(--y0) * (var(--nh) + var(--gap-y)) - var(--bi));height:calc((var(--y1) - var(--y0) + 1) * var(--nh) + (var(--y1) - var(--y0)) * var(--gap-y) + 2 * var(--bi));z-index:0;border:1px dashed color-mix(in srgb, var(--color-fg-dim) 60%, transparent);pointer-events:none;border-radius:5px}.arch-boundary-label{font:500 .5625rem/1.5 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;color:var(--color-fg-muted);background:var(--color-void);padding:0 5px;position:absolute;top:0;left:8px;transform:translateY(-50%)}.arch-edges{z-index:1;pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.arch-edge{fill:none;stroke:var(--edge);stroke-width:1.25px;transition:stroke var(--dur-fast) ease, opacity var(--dur-base) ease}.arch-arrow{stroke:var(--edge)}.arch-arrow-hot{stroke:var(--color-signal)}.arch-edge[data-state=hot],.arch-edge[data-state=current]{stroke:var(--color-signal);stroke-width:1.6px}.arch-edge[data-state=visited]{stroke:color-mix(in srgb, var(--color-signal) 55%, var(--edge))}.arch-edge[data-state=dim]{opacity:.22}.arch-edge[data-synthetic]{stroke-dasharray:3 4}.arch-edge-label{z-index:1;width:max-content;font:500 .625rem/1.35 var(--font-mono);text-align:center;color:var(--color-fg-dim);background:var(--color-void);pointer-events:none;transition:color var(--dur-fast) ease, opacity var(--dur-base) ease;border-radius:2px;padding:1px 5px;position:absolute;transform:translate(-50%,-50%)}.arch-edge-label[data-align=end]{text-align:right;transform:translate(-100%,-50%)}.arch-edge-label[data-align=above]{background:0 0;padding-bottom:0;line-height:1.2;transform:translate(-50%,calc(-100% - 4px))}.arch-edge-label[data-align=beside]{text-align:left;background:0 0;transform:translate(8px,-50%)}.arch-edge-label[data-state=hot],.arch-edge-label[data-state=current]{color:var(--color-signal)}.arch-edge-label[data-state=dim]{opacity:.3}.arch-packet{z-index:3;background:var(--color-signal);width:9px;height:9px;box-shadow:0 0 0 3px var(--color-void);offset-rotate:0deg;offset-distance:100%;pointer-events:none;border-radius:50%;position:absolute;top:0;left:0}.arch-packet[data-reverse]{offset-distance:0%}.arch-packet[data-moved]{animation:arch-packet .62s var(--ease-in-out-cubic) both}.arch-packet[data-moved][data-reverse]{animation-name:arch-packet-reverse}@keyframes arch-packet{0%{offset-distance:0%}to{offset-distance:100%}}@keyframes arch-packet-reverse{0%{offset-distance:100%}to{offset-distance:0%}}.arch[data-reveal=armed] .arch-node,.arch[data-reveal=armed] .arch-boundary,.arch[data-reveal=armed] .arch-edges,.arch[data-reveal=armed] .arch-edge-label{opacity:0}.arch[data-reveal=run] .arch-node{animation:arch-node-in .48s var(--ease-out-quart) both;animation-delay:calc(var(--c) * .11s)}.arch[data-reveal=run] .arch-boundary{animation:.7s both arch-fade-in}.arch[data-reveal=run] .arch-edge:not([data-synthetic]){stroke-dasharray:1;animation:arch-edge-in .56s var(--ease-out-quart) both;animation-delay:calc(var(--c) * .11s + .24s)}.arch[data-reveal=run] .arch-edge-label{animation:.4s both arch-fade-in;animation-delay:calc(var(--c) * .11s + .52s)}@keyframes arch-node-in{0%{opacity:0;transform:translateY(6px)}}@keyframes arch-edge-in{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes arch-fade-in{0%{opacity:0}}html[data-motion=reduced] .arch-packet,html[data-motion=reduced] .arch[data-reveal] .arch-node,html[data-motion=reduced] .arch[data-reveal] .arch-boundary,html[data-motion=reduced] .arch[data-reveal] .arch-edge,html[data-motion=reduced] .arch[data-reveal] .arch-edge-label{animation:none}.arch-legend{border-top:1px solid var(--color-line);font:500 .5625rem/1.3 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;flex-wrap:wrap;gap:.5rem 1.25rem;padding:.7rem 1rem;display:flex}.arch-legend li{align-items:center;gap:.4rem;display:inline-flex}.arch-legend li>span:last-child{color:var(--color-fg-muted)}.arch-legend-boundary,.arch-legend-group{border:1px dashed var(--color-fg-dim);border-radius:2px;width:16px;height:10px}.arch-legend-group{border-color:var(--color-data)}.arch-inspector{border-top:1px solid var(--color-line);background:color-mix(in srgb, var(--color-void) 45%, transparent);min-height:8.5rem;padding:1.25rem 1rem 1.5rem}@container (min-width:700px){.arch-inspector{padding:1.5rem 1.5rem 1.75rem}}.arch-follow-note{border-bottom:1px dashed var(--color-line);margin-bottom:1.25rem;padding-bottom:1.25rem}.arch-link-btn{text-align:left;min-height:32px;color:var(--color-fg);text-underline-offset:.22em;cursor:pointer;transition:text-decoration-color var(--dur-fast) ease;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;padding:.2rem 0;font-size:.9375rem;line-height:1.35;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;display:inline-flex}.arch-link-btn:hover{-webkit-text-decoration-color:color-mix(in srgb, var(--color-signal) 75%, transparent);text-decoration-color:color-mix(in srgb, var(--color-signal) 75%, transparent)}.arch-link-meta{font:500 .625rem/1.3 var(--font-mono);letter-spacing:.04em;color:var(--color-fg-dim)}.arch-ref-toggle{border-top:1px solid var(--color-line)}.arch-ref-toggle>summary{min-height:3rem;font:500 .6875rem/1.3 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--color-fg-muted);cursor:pointer;transition:color var(--dur-fast) ease;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem 1rem;padding:.75rem 1rem;list-style:none;display:flex}.arch-ref-toggle>summary::-webkit-details-marker{display:none}.arch-ref-toggle>summary:hover{color:var(--color-fg)}.arch-ref-toggle>summary>span:first-child:before{content:"+";width:1.1rem;color:var(--color-signal);display:inline-block}.arch-ref-toggle[open]>summary>span:first-child:before{content:"−"}.arch-ref-toggle>div{padding:0 1rem 1.5rem}html:not([data-motion]) .arch-live{display:none}html:not([data-motion]) .arch-ref-toggle{border-top:0}}
