/* K8SEC incident diagrams: native, responsive and useful without script. */
.opencode-architecture,.opencode-paths{border:1px solid #475569;border-radius:1rem;background:#080f23;padding:clamp(1rem,2vw,1.5rem);margin:2rem 0;min-width:0}
.opencode-architecture figcaption{color:#cbd5e1;line-height:1.6;margin-bottom:1.25rem}
.architecture-planes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.architecture-plane{border:1px solid #475569;border-radius:.6rem;background:#0f172a;padding:1rem;min-width:0}
.article-main .architecture-plane h3{border:0;padding:0;margin:0 0 1rem;color:#67e8f9;font-size:1.15rem}
.architecture-plane ol{list-style:none;margin:0;padding:0;display:grid;gap:1.25rem}
.architecture-plane li{position:relative;min-width:0}
.architecture-plane li+li::before{content:"↓";position:absolute;left:50%;top:-1.4rem;color:#67e8f9}
.architecture-plane details{border:1px solid #64748b;border-top:2px solid #38bdf8;border-radius:.4rem;background:#080f23;padding:.85rem}
.architecture-plane summary{cursor:pointer;line-height:1.5}
.architecture-plane summary strong,.architecture-plane .node-label{display:block}
.architecture-plane .node-label{color:#a5b4fc;font:600 .75rem/1.5 'JetBrains Mono',monospace;margin-bottom:.35rem;text-transform:uppercase}
.architecture-plane details p{margin:.8rem 0 0;font-size:.91rem}
.unknown-boundary{border:1px dashed #a78bfa;padding:1rem;border-radius:.5rem;margin-top:1rem}
.unknown-boundary strong{color:#ddd6fe}
.article-main .unknown-boundary p,.article-main .diagram-fallback{font-size:.9rem;margin:.5rem 0 0}
.article-main .diagram-fallback{color:#94a3b8;margin-top:1rem}
.path-controls{display:flex;flex-wrap:wrap;gap:.65rem;margin-bottom:1rem}
.path-controls button{cursor:pointer;color:#e2e8f0;background:#0f172a;border:1px solid #64748b;border-radius:.5rem;padding:.7rem .9rem;font:600 .9rem/1.4 Inter,sans-serif}
.path-controls button[aria-pressed="true"]{color:#a5f3fc;border-color:#67e8f9;background:#123044}
.article-main .path-status{font-size:.9rem;margin:0 0 1rem}
.opencode-paths section{border-top:1px solid #475569;padding-top:1rem;margin-top:1rem}
.article-main .opencode-paths section h3{margin:0 0 1rem}
.path-edges{list-style:none;padding:0!important;margin:1rem 0!important;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.path-edges li{border:1px solid #475569;border-top:2px solid #38bdf8;border-radius:.5rem;padding:1rem;min-width:0;overflow-wrap:anywhere;position:relative}
.path-edges li+li::before{content:"→";position:absolute;left:-1.15rem;top:40%;color:#67e8f9}
.path-edges span{display:block;color:#a5b4fc;font:600 .75rem/1.5 'JetBrains Mono',monospace;margin:.5rem 0}
.opencode-paths [hidden]{display:none!important}
@media(max-width:850px){.architecture-planes,.path-edges{grid-template-columns:minmax(0,1fr)}.path-edges li+li::before{content:"↓";left:50%;top:-1.45rem}.path-controls button{flex:1 1 11rem}}
@media print{.opencode-paths [data-path-panel][hidden]{display:block!important}.path-controls,.path-status{display:none!important}.architecture-plane details{break-inside:avoid}}

/* Protocol and retrieval boundaries, derived from documented interfaces, not breach forensics. */
.opencode-hero-image{background:#07111f;border:1px solid #40516b;border-radius:12px;overflow:hidden}
.opencode-hero-image img{display:block;width:100%;height:auto;aspect-ratio:1024/722;object-fit:contain;background:#05080d}
.oc-protocol,.oc-retrieval{border:1px solid #50627c;border-top:3px solid #22d3ee;border-radius:10px;background:#0a1424;margin:1.7rem 0;padding:clamp(1rem,2vw,1.4rem);min-width:0}
.oc-protocol figcaption,.oc-retrieval figcaption{font-weight:750;color:#f8fafc;line-height:1.5;margin-bottom:1rem}
.oc-protocol-steps,.oc-retrieval ol{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;list-style:none;padding:0;margin:0}
.oc-protocol-steps li,.oc-retrieval li{position:relative;min-width:0;border:1px solid #50627c;border-radius:7px;background:#101f33;padding:.8rem}
.oc-protocol-steps li:not(:last-child)::after,.oc-retrieval li:not(:last-child)::after{content:"→";position:absolute;right:-.58rem;top:42%;color:#67e8f9;background:#0a1424;padding:0 .13rem;z-index:1}
.oc-protocol b,.oc-retrieval b{display:block;color:#a5f3fc;font:700 .72rem/1.5 'JetBrains Mono',Consolas,monospace;text-transform:uppercase}
.oc-protocol span,.oc-retrieval span{display:block;font-size:.86rem;line-height:1.55;margin-top:.3rem;color:#d7e4ef}
.oc-protocol small{display:block;color:#c4b5fd;line-height:1.5;margin-top:.5rem}
.oc-protocol-branches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin:1rem 0}
.oc-protocol-branches div{border:1px dashed #a78bfa;border-radius:7px;padding:.8rem;background:#17213a}
.oc-protocol-branches strong{display:block;color:#e9d5ff;font-size:.82rem}
.oc-protocol-branches span{font-size:.78rem}
.oc-retrieval ol{grid-template-columns:repeat(5,minmax(0,1fr))}
.oc-retrieval-warning{border-left:3px solid #f59e0b;background:#172032;padding:.8rem 1rem;color:#f8e9c8;font-size:.85rem;line-height:1.6;margin:1rem 0 0}
@media(max-width:1000px){.oc-protocol-steps,.oc-retrieval ol{grid-template-columns:repeat(2,minmax(0,1fr))}.oc-protocol-branches{grid-template-columns:1fr}.oc-protocol-steps li:not(:last-child)::after,.oc-retrieval li:not(:last-child)::after{content:"↓";right:auto;left:48%;top:auto;bottom:-.65rem}}
@media(max-width:550px){.oc-protocol-steps,.oc-retrieval ol{grid-template-columns:1fr}.oc-protocol-steps li,.oc-retrieval li{min-height:0}}
@media(prefers-reduced-motion:reduce){.oc-protocol *,.oc-retrieval *{animation:none!important;transition:none!important}}
@media print{.oc-protocol,.oc-retrieval{break-inside:avoid}.opencode-hero-image img{max-height:7in;object-fit:contain}}

.oc-protocol-table{overflow-x:auto;max-width:100%;margin:1rem 0}.oc-protocol-table .matrix{min-width:620px}.oc-protocol-table caption{text-align:left;color:#e2e8f0;font-weight:700;padding:.5rem 0}
.oc-protocol-table:focus-visible{outline:3px solid #fbbf24;outline-offset:3px}
