.lab-map-section{--map-ink:#d9edee;--map-dim:#8faeb3;margin-top:20px;position:relative;color:var(--map-ink)}
.lab-map-toolbar{display:flex;justify-content:space-between;align-items:end;gap:35px;padding:36px 0 24px}.map-eyebrow{font:10px/1.5 ui-monospace,Consolas,monospace;letter-spacing:.14em;color:#74bac3;margin-bottom:13px}.lab-map-toolbar h2{font-size:clamp(38px,4.5vw,68px);font-weight:700!important;letter-spacing:-.045em}.lab-map-toolbar>div>p:last-child{font-size:14px;line-height:1.65;color:#a3bdbd;margin-top:18px}.map-view-controls{display:flex;align-items:end;flex-direction:column;gap:15px}.map-skins{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.map-skins>span{font:10px ui-monospace,Consolas,monospace;color:#7b9b9f;margin-right:9px}.map-skins button,.lab-map-filters button{border:1px solid #5b9aa538;background:#071619;padding:9px 12px;min-height:38px;font:11px Arial,sans-serif;color:#9dbbbf;border-radius:3px}.map-skins button[aria-pressed=true],.lab-map-filters button[aria-pressed=true]{color:#dcfbf5;background:#103033;border-color:#80cdd1}.map-skins button:hover,.lab-map-filters button:hover{border-color:#6aaeb7}.map-research-link{font-size:11px;border-bottom:1px solid #48727a;padding-bottom:5px;color:#b1d2d5}.map-research-link span{margin-left:12px}.lab-map-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:15px}.lab-map-filters button{padding:8px 14px;min-height:36px}
.map-viewport{border:1px solid #6b9b9e42;background:radial-gradient(ellipse at 51% 25%,#0c2a3344,transparent 65%),#050e12;overflow:auto;position:relative;scrollbar-color:#37606a #061115;scrollbar-width:thin;max-width:100%;isolation:isolate}.map-stage{position:relative;width:100%;min-width:900px;aspect-ratio:1200/820;--map-scale:1;background-image:radial-gradient(#7b9fa529 .6px,transparent .75px);background-size:20px 20px;isolation:isolate}.map-stage:before{content:'';position:absolute;inset:18px;border:1px solid #6b9b9e0d;pointer-events:none}.lab-map-wires{position:absolute;width:100%;height:100%;inset:0;z-index:0;overflow:visible;pointer-events:none}.lab-map-wire{fill:none;stroke:#5591a48c;stroke-width:1;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke;transition:stroke .2s,opacity .2s}.lab-map-wire[data-group=services]{stroke:#4b947ca3}.lab-map-wire[data-group=ai]{stroke:#8175a1a6}.lab-map-wire[data-group=publishing]{stroke:#a290647d}.lab-map-wire[data-connection=virtual]{stroke-dasharray:3 4}.lab-map-wire[data-connection=workflow]{stroke-dasharray:7 5}.lab-map-wire.is-dimmed{opacity:.11}.lab-map-wire.is-emphasized{stroke:#b3f1ec;stroke-width:1.4}.signal-dot{fill:#c7f5ff;filter:drop-shadow(0 0 2px #84e4ff)}.signal-dot[data-group=services]{fill:#b5f5d5}.signal-dot[data-group=ai]{fill:#dfcaff}.signal-dot[data-group=publishing]{fill:#f7dfac}.arrival-ring{fill:none;stroke:#c6f2ec;stroke-width:.9;vector-effect:non-scaling-stroke}.map-lane-label{position:absolute;pointer-events:none;color:#57727d;text-transform:uppercase;letter-spacing:.1em;font:calc(8px * var(--map-scale))/1.4 ui-monospace,Consolas,monospace}
.lab-node{position:absolute;left:var(--x);top:var(--y);width:var(--node-w);height:var(--node-h);transform:translate(-50%,-50%);border:0;background:transparent;padding:0;display:block;color:#91cbd3;z-index:1;cursor:pointer;isolation:isolate;--node-color:#91cbd3;transition:opacity .2s;outline:none;text-decoration:none}.lab-node[data-group=systems]{--node-color:#b8d3e7;color:#b8d3e7}.lab-node[data-group=services]{--node-color:#83e7bd;color:#83e7bd}.lab-node[data-group=ai]{--node-color:#cab1ff;color:#cab1ff}.lab-node[data-group=publishing]{--node-color:#f1d59e;color:#f1d59e}.lab-node:before{content:'';position:absolute;inset:0 2% 25%;border-radius:8px;background:radial-gradient(ellipse,#79d3e214,transparent 70%);opacity:0;transition:opacity .2s;z-index:-1}.node-art{display:block;width:100%;height:calc(100% - 32px);overflow:visible;filter:drop-shadow(0 1px 2px #0006);pointer-events:none}.node-label{display:flex;flex-direction:column;align-items:center;gap:3px;position:absolute;bottom:0;left:-15%;right:-15%;pointer-events:none}.node-name{font-size:calc(13px * var(--map-scale,1));font-weight:700;line-height:1.15;letter-spacing:-.02em;color:#cfe7e8;white-space:nowrap}.node-role{font-size:calc(9px * var(--map-scale,1));font-weight:400;color:#6e909b;line-height:1.25;white-space:nowrap}
.surface{fill:#0b1e27;stroke:#648e9e;stroke-width:1.25;stroke-linejoin:round}.metal{fill:#112d3a;stroke:#648e9e;stroke-width:1.1;stroke-linejoin:round}.screen{fill:#031019;stroke:#3b758a;stroke-width:1}.screen-line,.vent{fill:none;stroke:#406c7e;stroke-width:1}.glass{fill:#123344;stroke:#608f9f;stroke-width:.9}.accent{fill:none;stroke:currentColor;stroke-width:1.35;stroke-linejoin:round;opacity:.9}.keyboard-key{fill:#68c8e6;opacity:.75}.hardware-wordmark{fill:#cde6f1;font:700 19px Arial,sans-serif;letter-spacing:5px}.hardware-led{fill:#89ecc0;filter:drop-shadow(0 0 2px #5df7bb)}.rack-slot{fill:#061722;stroke:#4f7889;stroke-width:1}.port{fill:#010a10;stroke:#456b7b;stroke-width:1}.port-pin{fill:none;stroke:#c0ac77;stroke-width:1}.switch-wordmark{font:700 11px Arial,sans-serif;fill:#b8d0db;letter-spacing:2px}.vlan-surface{fill:#0a222d;stroke:#588e9f;stroke-width:1.15}.vlan-text{font:700 16px ui-monospace,Consolas,monospace;letter-spacing:2px;fill:#a2d2df}.brand-mark{fill:currentColor}.ubuntu-mark{fill:#e97940}.proxmox-mark{fill:#e8b57d}.forgejo-mark{fill:#f0974d}.pihole-mark{fill:#b8e5d0}.cloudflare-mark{fill:#ecc486}.kali-mark{color:#d4e8f2}.framecraft-wordmark{font:700 25px Arial,sans-serif;fill:#e5e8de;letter-spacing:-1px}.vm-badge{fill:#264855;stroke:#8dbdcf;stroke-width:.8}.vm-text{fill:#d0f0f5;font:700 11px ui-monospace,Consolas,monospace}.robot-sensor,.robot-eye{fill:currentColor;filter:drop-shadow(0 0 2px currentColor)}.robot-provider{fill:#d1c6e2;font:700 16px ui-monospace,Consolas,monospace}.robot-eyes{transform-box:fill-box;transform-origin:center;animation:robot-blink 7.2s infinite}.robot-mouth{opacity:.55}.art-docker{fill:#41a9ec}.docker-whale{animation:whale-drift 5s ease-in-out infinite;transform-origin:50% 60%}.docker-cargo{animation:cargo-lift 3.2s ease-in-out infinite;transform-origin:center}.cargo-1,.cargo-4,.cargo-7{animation-delay:-.6s}.cargo-2,.cargo-5,.cargo-8{animation-delay:-1.2s}.document-scan{stroke:#7ef1cd;stroke-width:1.8;opacity:.75;animation:document-scan 5.5s ease-in-out infinite}.led-1{animation:port-status 3.1s steps(1) infinite}.led-2{animation:port-status 4.3s steps(1) infinite}.led-3{animation:port-status 3.7s steps(1) infinite}
.lab-node[data-kind=logo] .node-art{height:calc(100% - 33px);padding:5px}.lab-node[data-kind=product] .node-name{display:none}.lab-node[data-kind=product] .node-role{font-size:calc(10px * var(--map-scale));color:#b4b297}.lab-node[data-kind=product] .node-art{height:calc(100% - 22px)}.lab-node.is-dimmed{opacity:.23}.lab-node:hover,.lab-node:focus-visible,.lab-node.is-selected{opacity:1;z-index:2}.lab-node:hover:before,.lab-node:focus-visible:before,.lab-node.is-selected:before{opacity:1}.lab-node:focus-visible{outline:1px solid #9be2e7;outline-offset:5px;border-radius:5px}.lab-node.is-selected .node-name{color:#f0ffff}.lab-node:hover .surface,.lab-node.is-selected .surface{stroke:#b4e9eb}.map-signals-paused .node-art *,.motion-paused .node-art *{animation-play-state:paused!important}
[data-skin=blueprint] .surface,[data-skin=blueprint] .metal,[data-skin=blueprint] .rack-slot,[data-skin=blueprint] .vlan-surface,[data-skin=blueprint] .glass{fill:#06151b;stroke:#81c7d7;stroke-width:.9}[data-skin=blueprint] .screen{fill:#031018;stroke:#5f98a8}[data-skin=blueprint] .keyboard-key{fill:#83b9cb;opacity:.5}[data-skin=blueprint] .hardware-led{fill:#b7e9ed}[data-skin=outline] .surface,[data-skin=outline] .metal,[data-skin=outline] .rack-slot,[data-skin=outline] .vlan-surface,[data-skin=outline] .glass{fill:#061116;stroke:#6f8e98;stroke-width:.85}[data-skin=outline] .screen{fill:#030c10;stroke:#49616b}[data-skin=outline] .vent,[data-skin=outline] .keyboard-key,[data-skin=outline] .port-pin,[data-skin=outline] .screen-line{opacity:.2}[data-skin=outline] .node-art{filter:none}
.map-guide{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:13px 0}.map-line-legend{display:flex;align-items:center;gap:20px;flex-wrap:wrap;font-size:10px;color:#83a4ae}.map-line-legend>span{display:flex;align-items:center;gap:8px}.map-line-legend i{display:inline-block;width:24px;border-top:1px solid #6fb3c1}.map-line-legend .legend-virtual{border-top-style:dotted}.map-line-legend .legend-workflow{border-top-style:dashed;border-top-color:#bdac7f}.map-pause{font-size:11px;color:#a5ced2;padding:8px 0;min-height:36px;border-bottom:1px solid #375a63;white-space:nowrap}.map-scope{font-size:10px;line-height:1.7;color:#6b8d95;max-width:850px;margin:2px 0 15px}.map-mobile-hint{display:none}.map-jump{display:flex;gap:12px;align-items:center;font-size:11px;color:#9fbabd}.map-jump select{background:#091b20;color:#c9e1e4;border:1px solid #305b69;padding:9px 28px 9px 11px;font:inherit;border-radius:3px;max-width:100%;min-height:40px}.map-inspector{display:grid;grid-template-columns:1fr 2fr;gap:35px;padding:26px 0 30px;border-bottom:1px solid #73a0ab35;min-height:170px}.map-inspector small{color:#82c4cb;text-transform:uppercase;font:10px/1.5 ui-monospace,Consolas,monospace;letter-spacing:.1em}.map-inspector h3{font-size:26px;line-height:1.15;letter-spacing:-.03em;margin:8px 0 0;font-weight:700}.map-inspector p{font-size:13px;line-height:1.8;color:#a6bdc0;max-width:710px}.map-relationships{display:flex;gap:7px;flex-wrap:wrap;margin-top:16px}.map-relationships button,.map-relationships a{font-size:11px;color:#a4dedc;border-bottom:1px solid #385b66;padding:7px 8px;min-height:34px}.map-relationships a{color:#e4d4aa}.map-relationships button:hover,.map-relationships a:hover{border-color:#c3ecdf}
.guide-preview{padding:60px 0 75px;border-top:1px solid #78a7a12d}.guide-preview>p{color:#79b4bc;font-size:12px;margin-bottom:18px}.guide-preview>h2{font-size:clamp(36px,4vw,64px);max-width:750px}.guide-preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:38px}.guide-preview article{border-top:1px solid #73bbbf40;padding-top:24px}.guide-preview h3{font-size:27px;line-height:1.2;letter-spacing:-.035em;max-width:400px}.guide-preview article p{color:#98b7b6;font-size:14px;line-height:1.8;max-width:500px;margin:18px 0}.guide-preview .underlink{font-size:13px}.stack-letter{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border:1px solid #76bcbd6b;font:700 13px ui-monospace,Consolas,monospace;color:#b6e8dd}.footer-bottom nav{flex-wrap:wrap}.footer-bottom nav a{white-space:nowrap}.stack-strip ul{max-width:1100px}.stack-strip a img[src*="kubuntu"]{filter:none;width:92px!important;height:32px!important}.stack-strip a img[src*="kali"]{filter:none;width:45px!important}
@keyframes robot-blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.12)}}@keyframes whale-drift{0%,100%{transform:translateY(0)}50%{transform:translateY(.18px)}}@keyframes cargo-lift{0%,100%{transform:translateY(0)}50%{transform:translateY(-.35px)}}@keyframes document-scan{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(57px);opacity:.9}}@keyframes port-status{0%,26%,35%,100%{opacity:.9}28%,33%{opacity:.3}}
@media(min-width:1450px){.map-viewport{max-width:1250px;margin-inline:auto}}
@media(max-width:950px){.lab-map-toolbar{align-items:start;flex-direction:column;gap:22px}.map-view-controls{align-items:start}.map-inspector{grid-template-columns:1fr 1.8fr}.node-name{font-size:max(10px,calc(13px * var(--map-scale)))}.node-role{font-size:max(8px,calc(9px * var(--map-scale)))}}
@media(max-width:700px){.lab-map-toolbar{padding-top:28px}.lab-map-toolbar h2{font-size:42px}.lab-map-toolbar>div>p:last-child{font-size:13px}.lab-map-filters{gap:5px}.lab-map-filters button{font-size:10px;padding:8px 10px}.map-viewport{max-height:560px}.map-mobile-hint{display:inline}.map-guide{align-items:start;gap:12px}.map-line-legend{font-size:9px;gap:8px 14px}.map-line-legend>span{gap:5px}.map-line-legend i{width:17px}.map-pause{font-size:10px}.map-jump{flex-wrap:wrap}.map-inspector{grid-template-columns:1fr;gap:15px;min-height:235px}.map-inspector h3{font-size:26px}.map-inspector p{font-size:12px}.guide-preview{padding:45px 0 60px}.guide-preview-grid{grid-template-columns:1fr;gap:28px}.map-skins button{font-size:10px;padding:8px 11px}}
@media(prefers-reduced-motion:reduce){.lab-map-wire,.lab-node,.map-skins button,.lab-map-filters button{transition:none}}
.map-stage{aspect-ratio:1200/840}
/* The existing site disables CSS motion at the OS preference. The map starts
   paused too; these scoped rules enable its details only after explicit Resume. */
.map-stage:not(.map-signals-paused) .docker-cargo{animation:cargo-lift 3.2s ease-in-out infinite!important}
.map-stage:not(.map-signals-paused) .cargo-1,.map-stage:not(.map-signals-paused) .cargo-4,.map-stage:not(.map-signals-paused) .cargo-7{animation-delay:-.6s!important}
.map-stage:not(.map-signals-paused) .cargo-2,.map-stage:not(.map-signals-paused) .cargo-5,.map-stage:not(.map-signals-paused) .cargo-8{animation-delay:-1.2s!important}
.map-stage:not(.map-signals-paused) .docker-whale{animation:whale-drift 5s ease-in-out infinite!important}
.map-stage:not(.map-signals-paused) .robot-eyes{animation:robot-blink 7.2s infinite!important}
.map-stage:not(.map-signals-paused) .document-scan{animation:document-scan 5.5s ease-in-out infinite!important}
@media(prefers-reduced-motion:reduce){.object-samples .node-art *{animation:none!important}}
.component-text{font:700 13px Arial,sans-serif;letter-spacing:1px;fill:#c7e3e9}.app-tile-text{font:700 13px ui-monospace,Consolas,monospace;fill:#a3d5ce}.mesh-link{stroke:currentColor;stroke-width:1.5;fill:none;opacity:.65}.mesh-dots{fill:#b8d5e7;stroke:#0c2632;stroke-width:2}
.lab-node[data-group=security]{--node-color:#e6b889;color:#e6b889}.signal-dot[data-group=security]{fill:#f6d29b}.lab-map-wire[data-group=security]{stroke:#b3946194}.lab-map-wire[data-connection=remote]{stroke-dasharray:2 6;stroke:#9d8ab78c}.lab-map-wire[data-connection=hosted]{stroke-dasharray:2 3}.lab-map-wire[data-connection=access]{stroke-dasharray:5 3}.lab-map-wire[data-connection=dns]{stroke:#8caf80a1}.lab-map-wire[data-connection=backup]{stroke-dasharray:4 5;stroke:#b1a17d99}
.lab-map-wire[data-status=planned],.lab-map-wire[data-status=progress]{stroke:#677b827d;stroke-dasharray:3 6}.lab-node[data-status=planned]{opacity:.53}.lab-node[data-status=progress]{opacity:.72}.lab-node[data-status=planned] .surface,.lab-node[data-status=planned] .vlan-surface{stroke-dasharray:4 3;fill:#061116}.lab-node[data-status=planned] .hardware-led,.lab-node[data-status=progress] .hardware-led{fill:#6c7f88;filter:none;animation:none!important}.lab-node[data-status=verify] .node-role{color:#c5a77f}.lab-node[data-status=progress] .node-role{color:#b3a3d4}.lab-node[data-status=planned] .node-role{color:#a0a9ad}.lab-node.is-dimmed[data-status=planned],.lab-node.is-dimmed[data-status=progress]{opacity:.14}.lab-node[data-status=planned]:hover,.lab-node[data-status=planned]:focus-visible,.lab-node.is-selected[data-status=planned]{opacity:1}
.map-state-legend{display:flex;gap:19px;flex-wrap:wrap;font:10px/1.6 ui-monospace,Consolas,monospace;margin-bottom:18px;color:#87a5ae}.map-state-legend span{display:flex;align-items:center;gap:6px}.map-state-legend span:before{content:'';width:5px;height:5px;display:inline-block;border:1px solid #7bb6c3;border-radius:50%}.map-state-legend span:nth-child(2):before{border-color:#d6b682}.map-state-legend span:nth-child(3):before{border-color:#b9a1d6}.map-state-legend span:nth-child(4):before{border-color:#85939a;border-style:dashed}
.map-inventories{padding:30px 0 15px}.map-inventories>h3{font-size:28px;letter-spacing:-.04em;margin-bottom:14px}.map-inventories>p{max-width:740px;font-size:13px;line-height:1.8;color:#8dadaf;margin-bottom:26px}.map-inventories details{border-top:1px solid #45616c69;padding:18px 0}.map-inventories summary{cursor:pointer;font-size:14px;font-weight:700;color:#b7d4d7;padding:7px 0;min-height:38px}.map-inventories details>p{max-width:780px;font-size:12px;line-height:1.8;color:#8ba5ab;margin:15px 0 20px}.inventory-scroll{overflow:auto;max-width:100%;scrollbar-color:#37606a #061115}.map-inventories table{width:100%;min-width:620px;border-collapse:collapse;text-align:left;font-size:12px;color:#a9c0c4;line-height:1.65}.map-inventories th,.map-inventories td{padding:14px 16px 14px 0;border-bottom:1px solid #4e73722b;vertical-align:top}.map-inventories thead th{color:#7aaab5;font:10px/1.5 ui-monospace,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase}.map-inventories tbody th{font-weight:700;color:#c3dadd;width:27%}.map-inventories td:last-child{color:#a9c8b4;width:28%}@media(max-width:700px){.map-inventories>h3{font-size:25px}.map-inventories summary{font-size:13px}.map-state-legend{font-size:9px;gap:10px}.map-scope{font-size:10px}}

