/* LOCAL-014 · Scoped scene, no global design overrides. */
.case-visual{margin:26px 0;border:1px solid #3d5369;border-radius:18px;overflow:hidden;background:#101d2e;box-shadow:0 18px 45px #0002}.viz-heading{padding:26px 28px 8px;display:flex;justify-content:space-between;gap:20px;align-items:center}.viz-heading h2{font-size:clamp(1.3rem,2.5vw,2rem);line-height:1.2;margin:10px 0;color:#e4edf4}.viz-live{font:11px Consolas,monospace;color:#c0dea0;display:flex;align-items:center;gap:8px;white-space:nowrap}.viz-live i{width:7px;height:7px;border-radius:50%;background:#9fef00;box-shadow:0 0 12px #9fef0044}.viz-intro{padding:0 28px;color:#a8bdce;font-size:.8rem;line-height:1.7}.viz-canvas{background:radial-gradient(ellipse at 45% 35%,#26456066,transparent 65%),#0e1928;border-block:1px solid #2c425a;margin-top:20px}.viz-network{width:100%;height:auto;display:block;max-height:430px}.viz-grid{stroke:#456079;stroke-width:1;opacity:.1}.viz-node>rect{fill:#192d42;stroke:#4b657c;stroke-width:1.5}.viz-node.safe>rect{fill:#1e352a;stroke:#85b443}.viz-node.danger>rect{fill:#342a31;stroke:#bc7b69}.viz-icon{fill:none;stroke:#bcd2e2;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.viz-node.safe .viz-icon{stroke:#b1e77b}.viz-node.danger .viz-icon{stroke:#e7ac95}.viz-node text{fill:#e1eaf2;font:600 15px system-ui}.viz-node text.viz-sub{fill:#b5c8d8;font:9px Consolas,monospace;letter-spacing:.3px}.viz-route path{fill:none;stroke:#58758c;stroke-width:2}.viz-route text{fill:#bed0de;font:10px system-ui}.viz-route.flowing .viz-packets{stroke:#edb38b;stroke-width:3;stroke-dasharray:9 24;animation:viz-traffic 2.8s linear infinite}.viz-route.closed path{stroke:#91b65f;stroke-dasharray:3 7}.viz-route.closed .viz-packets{display:none}.viz-route.closed text{fill:#bbdf9d}.viz-files rect{fill:#634e3d;stroke:#e6b787;animation:viz-file 3.6s ease-in-out infinite;animation-delay:var(--file-delay)}.viz-files text{fill:#bdd0df;font:10px system-ui}.viz-files.stopped rect{animation:none;fill:#284532;stroke:#9bc576}.viz-legend{padding:10px 22px 16px;display:flex;gap:20px;justify-content:center;flex-wrap:wrap;color:#a7bfd0;font:11px system-ui}.viz-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:#34485a;border-bottom:1px solid #34485a}.viz-control{background:#162539;padding:18px;display:flex;gap:12px;align-items:center}.viz-control>span{font-size:25px;color:#efba8f}.viz-control b{display:block;font-size:.8rem;color:#e1eaf3}.viz-control small{display:block;font-size:.7rem;color:#b8cada;margin-top:5px;line-height:1.5}.viz-control.is-closed>span{color:#a5d16e}.viz-inspect{padding:24px 26px}.viz-inspect-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px}.viz-inspect details{border:1px solid #405a72;background:#1a2b3e;border-radius:10px;align-self:start}.viz-inspect summary{display:flex;align-items:center;gap:9px;padding:14px 12px;cursor:pointer;min-height:48px;box-sizing:border-box;color:#dbe7f1;font-size:.75rem;list-style:none}.viz-inspect summary::-webkit-details-marker{display:none}.viz-inspect summary>svg{width:26px;height:26px;flex-shrink:0;fill:none;stroke:#a9d67b;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.viz-inspect summary>b{margin-left:auto;font:18px monospace;color:#9fef00}.viz-inspect details[open] summary>b{transform:rotate(45deg)}.viz-inspect p{padding:0 14px 12px;color:#bdcedd;font-size:.8rem;line-height:1.8;margin:0}.viz-inspect summary:focus-visible{outline:3px solid #9fef00;outline-offset:3px;border-radius:8px}.viz-inspect summary:active{background:#2a4054}.viz-team{display:flex;align-items:center;gap:12px;padding:20px 26px;background:#182a3d;border-block:1px solid #354c62}.viz-avatar{width:43px;height:43px;flex-shrink:0;display:grid;place-items:center;border:1px solid #6589a1;background:#29465b;border-radius:50%;color:#d2e8f7;font:600 13px Consolas,monospace}.viz-avatar.l2{background:#30462b;border-color:#8aac66;color:#d2edb4}.viz-team b{display:block;font-size:.75rem;color:#d5e3ee}.viz-team span{display:block;font-size:.65rem;line-height:1.7;color:#b7cbdc}.viz-team>i{color:#8fb3c9;margin:0 8px}.viz-availability{margin-left:auto;text-align:right}.viz-availability b{font:26px Consolas,monospace;color:#b3de82}.viz-recent{padding:20px 26px}.viz-recent>b{font-size:.75rem;color:#bdd0df}.viz-recent>div{display:flex;gap:15px;margin-top:12px;align-items:baseline;font-size:.75rem;color:#d0dfe9;line-height:1.6}.viz-recent time{font:11px Consolas,monospace;white-space:nowrap;color:#a2cb7a}.viz-recent p{font-size:.75rem;color:#a7bfd0;line-height:1.7}.viz-warning{margin:15px 26px;padding:12px;border:1px solid #a57c61;background:#372d29;color:#f3c7a6;font-size:.8rem;line-height:1.7}@keyframes viz-traffic{to{stroke-dashoffset:-132}}@keyframes viz-file{0%,100%{transform:translateY(0);opacity:.8}50%{transform:translateY(-6px);opacity:1}}.motion-paused .case-visual *{animation-play-state:paused!important}@media(prefers-reduced-motion:reduce){.case-visual *{animation:none!important;transition:none!important}}@media(max-width:1000px){.viz-heading{align-items:flex-start;flex-direction:column;gap:5px}.viz-inspect-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.viz-team{flex-wrap:wrap}.viz-availability{margin-left:0;text-align:left}}@media(max-width:600px){.viz-heading{padding:20px 18px 8px}.viz-intro{padding:0 18px}.viz-network{min-width:680px}.viz-canvas{overflow-x:auto}.viz-legend{justify-content:flex-start;gap:10px}.viz-controls{grid-template-columns:1fr}.viz-control{padding:12px 18px}.viz-inspect{padding:20px 18px}.viz-inspect-grid{grid-template-columns:1fr}.viz-team{padding:18px;display:grid;grid-template-columns:43px minmax(0,1fr)}.viz-team>i{display:none}.viz-availability{grid-column:1/-1}.viz-recent{padding:18px}.viz-live{white-space:normal;line-height:1.6}}

.viz-decision-state{border-left:3px solid #9fef00;background:#21362c;padding:14px 16px;margin:16px 0}.viz-decision-state>b{font-size:.8rem;color:#d7edbd}.viz-decision-state p{margin:7px 0}.viz-decision-state small{color:#b7c9be;font-size:.7rem;line-height:1.6;display:block}.viz-canvas:focus-visible{outline:3px solid #9fef00;outline-offset:-4px}
