.infra-page[data-v-b5259e2e]{flex-direction:column;gap:2.5rem;display:flex}.infra-masthead__lead[data-v-b5259e2e]{max-width:62ch;font-size:var(--font-md);color:var(--c-text);margin:0 0 1rem;line-height:1.65}.infra-masthead__meta[data-v-b5259e2e]{font-family:var(--font-mono);font-size:var(--font-sm);letter-spacing:.04em;text-transform:uppercase;color:var(--c-muted);flex-wrap:wrap;align-items:center;gap:.4rem .5rem;margin:0 0 1.25rem;display:flex}.infra-masthead__sep[data-v-b5259e2e]{color:var(--c-border-ui)}.infra-status[data-v-b5259e2e]{color:var(--c-text);align-items:center;gap:.45rem;display:inline-flex}.infra-status__dot[data-v-b5259e2e]{background:var(--c-dot-green);border-radius:50%;width:7px;height:7px;animation:2.2s ease-in-out infinite blink-dot}.infra-action[data-v-b5259e2e]{border:1px solid var(--c-border-ui);color:var(--c-muted);font-family:var(--font-mono);font-size:var(--font-sm);letter-spacing:.04em;cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:.45rem;padding:.4rem .85rem;transition:color .2s,border-color .2s,background-color .2s;display:inline-flex}.infra-action[data-v-b5259e2e]:active{transform:translateY(1px)}@media (hover:hover) and (pointer:fine){.infra-action[data-v-b5259e2e]:hover{color:var(--c-accent);border-color:var(--c-accent);background:var(--c-nav-hover)}}.infra-section__head[data-v-b5259e2e]{border-bottom:1px solid var(--c-border);margin-bottom:.75rem;padding-bottom:.5rem}.infra-section__title[data-v-b5259e2e]{font-size:var(--font-3xl);color:var(--c-heading);margin:0;font-weight:600}.infra-hint[data-v-b5259e2e]{font-family:var(--font-mono);font-size:var(--font-xs);letter-spacing:.04em;color:var(--c-muted);margin:0 0 .75rem}.diagram-container[data-v-b5259e2e]{border:1px solid var(--c-border);border-radius:14px;padding:.5rem;position:relative;overflow:auto hidden}#svg-diagram[data-v-b5259e2e]{width:100%;min-width:860px;font-family:var(--font-mono);display:block}svg [role=button][data-v-b5259e2e]{outline:none}svg [role=button]:focus-visible .node-bg[data-v-b5259e2e]{stroke:var(--c-accent);stroke-width:2px}.node-tooltip[data-v-b5259e2e]{z-index:30;background:var(--c-surface);border:1px solid var(--c-border);max-width:300px;box-shadow:var(--elevation-floating);color:var(--c-text);font-family:var(--font-mono);font-size:var(--font-xs);opacity:0;pointer-events:none;border-radius:10px;padding:.75rem .9rem;line-height:1.55;transition:opacity .15s;position:absolute}.node-tooltip.visible[data-v-b5259e2e]{opacity:1;pointer-events:auto}.node-tooltip__title[data-v-b5259e2e]{color:var(--c-heading);margin-bottom:.3rem;font-weight:600}.node-tooltip__body[data-v-b5259e2e]{color:var(--c-muted)}.node-tooltip__close[data-v-b5259e2e]{color:var(--c-muted);font-family:inherit;font-size:var(--font-sm);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.1rem .3rem;line-height:1;position:absolute;top:.3rem;right:.4rem}@media (hover:hover) and (pointer:fine){.node-tooltip__close[data-v-b5259e2e]:hover{color:var(--c-text);background:var(--c-surface-alt)}}.infra-legend[data-v-b5259e2e]{border-top:1px solid var(--c-border);flex-wrap:wrap;gap:.6rem 2rem;margin-top:1rem;padding-top:1rem;display:flex}.infra-legend__list[data-v-b5259e2e]{font-family:var(--font-mono);font-size:var(--font-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted);flex-wrap:wrap;gap:.5rem 1.25rem;margin:0;padding:0;list-style:none;display:flex}.infra-legend__list li[data-v-b5259e2e]{align-items:center;gap:.45rem;display:inline-flex}.legend-bar[data-v-b5259e2e]{background:var(--c-border-ui);border-radius:1.5px;width:3px;height:13px}.legend-bar--runtime[data-v-b5259e2e]{background:var(--c-accent)}.legend-bar--build[data-v-b5259e2e]{background:var(--c-accent-2)}.legend-line[data-v-b5259e2e]{border-top:2px solid var(--c-accent);width:22px}.legend-line--dashed[data-v-b5259e2e]{border-top-style:dashed;border-top-color:var(--c-accent-2)}.legend-line--dotted[data-v-b5259e2e]{border-top-style:dotted;border-top-color:var(--c-border-ui)}.stack-index[data-v-b5259e2e]{border-top:1px solid var(--c-border);margin:0;padding:0;list-style:none}.stack-index>li+li[data-v-b5259e2e]{border-top:1px solid var(--c-border)}.stack-entry[data-v-b5259e2e]{grid-template-columns:3rem minmax(0,1fr) minmax(0,1.3fr);align-items:baseline;gap:.5rem 1.5rem;padding:1.5rem 0;display:grid}.stack-entry__index[data-v-b5259e2e]{font-family:var(--font-mono);font-size:var(--font-lg);color:var(--c-border-ui);font-weight:600}.stack-entry__title[data-v-b5259e2e]{font-size:var(--font-xl);color:var(--c-heading);align-items:center;gap:.6rem;margin:0 0 .375rem;font-weight:600;display:flex}.stack-entry__bar[data-v-b5259e2e]{background:var(--c-accent);border-radius:1.5px;flex:none;width:3px;height:1.05em}.stack-entry__bar--build[data-v-b5259e2e]{background:var(--c-accent-2)}.stack-entry__bar--external[data-v-b5259e2e]{background:var(--c-border-ui)}.stack-entry__desc[data-v-b5259e2e]{max-width:46ch;font-size:var(--font-body-sm);color:var(--c-muted);margin:0;line-height:1.6}.stack-entry__items[data-v-b5259e2e]{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.stack-entry__items li[data-v-b5259e2e]{background:var(--c-surface-alt);border:1px solid var(--c-border);font-family:var(--font-mono);font-size:var(--font-xs);letter-spacing:.03em;color:var(--c-text);border-radius:4px;padding:.2rem .5rem}@media (width<=768px){.stack-entry[data-v-b5259e2e]{grid-template-columns:2.25rem minmax(0,1fr);gap:.5rem 1rem;padding:1.25rem 0}.stack-entry__items[data-v-b5259e2e]{grid-column:2/-1}}@media (width<=580px){.infra-page[data-v-b5259e2e]{gap:2rem}.infra-section__title[data-v-b5259e2e]{font-size:var(--font-xl)}.stack-entry__title[data-v-b5259e2e]{font-size:var(--font-md)}#svg-diagram[data-v-b5259e2e]{min-width:760px}.diagram-container[data-v-b5259e2e]{padding:.25rem}}@media (prefers-reduced-motion:reduce){.infra-status__dot[data-v-b5259e2e]{animation:none}.infra-action[data-v-b5259e2e],.node-tooltip[data-v-b5259e2e]{transition:none}.infra-action[data-v-b5259e2e]:active{transform:none}}.infra-page .grid-line{stroke:var(--c-border);opacity:.7}.infra-page .region-fill{fill:var(--c-bg)}.infra-page .region-label{fill:var(--c-muted);font-family:var(--font-mono);letter-spacing:.14em;font-size:9px;font-weight:600}.infra-page .node{cursor:pointer;transition:opacity .15s}.infra-page .node-bg{fill:var(--c-surface);stroke:var(--c-border);stroke-width:1.5px;transition:stroke .15s,filter .15s}.infra-page .node-emphasis .node-bg{stroke:var(--c-accent)}.infra-page .node-bar{fill:var(--c-border-ui)}.infra-page .node[data-layer=runtime] .node-bar{fill:var(--c-accent)}.infra-page .node[data-layer=build] .node-bar{fill:var(--c-accent-2)}.infra-page .node-tag{fill:var(--c-muted);letter-spacing:.12em;font-size:8.5px;font-weight:600}.infra-page .node-title{fill:var(--c-heading);font-family:var(--font-display);font-size:13px;font-weight:600}.infra-page .node-emphasis .node-title{font-size:14px}.infra-page .node-sub{fill:var(--c-muted);font-size:8px}.infra-page .edge-group{transition:opacity .15s}.infra-page .edge{fill:none}.infra-page .edge-tone-runtime{stroke:var(--c-accent)}.infra-page .edge-tone-build{stroke:var(--c-accent-2)}.infra-page .edge-tone-external{stroke:var(--c-border-ui)}.infra-page .edge-style-solid{stroke-width:1.2px}.infra-page .edge-style-primary{stroke-width:2.2px}.infra-page .edge-style-dashed{stroke-width:1.4px;stroke-dasharray:5 4}.infra-page .edge-style-dotted{stroke-width:1.2px;stroke-dasharray:2 4}.infra-page .edge-label{fill:var(--c-muted);font-family:var(--font-mono);letter-spacing:.06em;font-size:7.5px}.infra-page .arr-runtime{fill:var(--c-accent)}.infra-page .arr-build{fill:var(--c-accent-2)}.infra-page .arr-external{fill:var(--c-border-ui)}.infra-page #svg-diagram.dimmed .node:not(.highlighted){opacity:.3}.infra-page #svg-diagram.dimmed .edge-group:not(.highlighted){opacity:.1}.infra-page .node.highlighted .node-bg{stroke:var(--c-accent)}.infra-page .edge-group.highlighted .edge-label{fill:var(--c-text)}@media (hover:hover) and (pointer:fine){.infra-page .node:hover .node-bg{stroke:var(--c-accent);filter:drop-shadow(0 0 6px var(--c-glow))}}@media (prefers-reduced-motion:reduce){.infra-page .node,.infra-page .node-bg,.infra-page .edge-group{transition:none}}
