:root{--lab-paper:#f7fbff;--lab-ink:#10121e;--lab-muted:#66718a;--lab-blue:#175cff;--lab-blue-soft:#a8ceff;--lab-rule:#407ab736}html:has(.homelab-page){background:var(--lab-paper)}body:has(.homelab-page){background:var(--lab-paper);color:var(--lab-ink)}.homelab-page{background:radial-gradient(circle at 77% 17%, #c3e4ff42, transparent 31rem), radial-gradient(circle at 11% 67%, #daefff40, transparent 34rem), var(--lab-paper);color:var(--lab-ink);font-family:Instrument Sans,system-ui,sans-serif;position:relative;overflow:clip}.homelab-page__smooth-wrapper{width:100%;overflow:hidden}.homelab-page__smooth-content{will-change:transform;width:100%}.homelab-page:before{z-index:30;background:var(--lab-blue);content:"";transform-origin:0;width:100%;height:2px;animation:1.1s cubic-bezier(.22,1,.36,1) .12s forwards homelab-page-load;position:fixed;top:0;left:0;transform:scaleX(0)}.homelab-page__story{--story-progress:0;--copy-one-opacity:1;--copy-one-y:0px;--copy-two-opacity:0;--copy-two-y:30px;--copy-three-opacity:0;--copy-three-y:30px;--copy-four-opacity:0;--copy-four-y:30px;--rack-opacity:1;--map-opacity:0;--map-y:34px;--server-opacity:0;--server-x:42px;--server-y:-18px;--footer-opacity:0;--field-note-1-opacity:0;--field-note-2-opacity:0;--field-note-3-opacity:0;--field-note-4-opacity:0;--local-route-offset:80px;--route-offset:700px;--remote-opacity:0;height:900svh;position:relative}.homelab-page__stage{isolation:isolate;border-bottom:1px solid var(--lab-rule);height:100svh;min-height:620px;position:sticky;top:0;overflow:hidden}.homelab-page__story[data-gsap=true] .homelab-page__stage{position:relative;top:auto}.homelab-page__stage:after{z-index:1;content:"";pointer-events:none;background:linear-gradient(90deg,#f7fbff61,#0000 45%),linear-gradient(#0000 83%,#ddeffd38);position:absolute;inset:0}.homelab-page__header{z-index:20;justify-content:space-between;align-items:center;padding:clamp(25px,3vw,46px) clamp(24px,4.8vw,72px);display:flex;position:absolute;top:0;left:0;right:0}.homelab-page__brand{color:var(--lab-ink);letter-spacing:-.035em;font-size:clamp(16px,1.25vw,20px);font-weight:560;text-decoration:none}.homelab-page__marker{z-index:12;min-height:16px;color:var(--lab-muted);letter-spacing:.075em;text-transform:uppercase;align-items:center;gap:16px;font-family:Commit Mono,ui-monospace,monospace;font-size:clamp(10.5px,.68vw,11px);line-height:1.3;display:flex;position:absolute;top:clamp(104px,14.5vh,148px);left:clamp(38px,4.8vw,72px)}.homelab-page__number-window{height:1.3em;display:block;overflow:hidden}.homelab-page__number{animation:.48s cubic-bezier(.22,1,.36,1) both homelab-index-in;display:block}.homelab-page__marker-label{display:block}.homelab-page__number{color:var(--lab-blue);font-weight:700}.homelab-page__marker-line{background:#175cff80;width:clamp(16px,1.6vw,24px);height:1px;display:block}.homelab-page__copy-deck{z-index:10;position:absolute;inset:clamp(178px,24vh,242px) 56% 92px clamp(38px,4.8vw,72px)}.homelab-page__copy{pointer-events:none;will-change:transform, opacity;width:min(100%,640px);position:absolute;top:0;left:0}.homelab-page__copy--1{opacity:var(--copy-one-opacity);transform:translate3d(0, var(--copy-one-y), 0)}.homelab-page__copy--2{opacity:var(--copy-two-opacity);transform:translate3d(0, var(--copy-two-y), 0)}.homelab-page__copy--3{opacity:var(--copy-three-opacity);transform:translate3d(0, var(--copy-three-y), 0)}.homelab-page__copy--4{opacity:var(--copy-four-opacity);transform:translate3d(0, var(--copy-four-y), 0)}.homelab-page h1,.homelab-page h2{letter-spacing:-.055em;text-wrap:balance;max-width:9.2em;margin:0;font-size:clamp(48px,4.55vw,74px);font-weight:470;font-stretch:92%;line-height:.98}.homelab-page__copy--2 h2{max-width:9.8em;font-size:clamp(46px,4.35vw,70px)}.homelab-page__copy--3 h2{max-width:9em;font-size:clamp(46px,4.2vw,68px)}.homelab-page__copy--4 h2{max-width:9.3em;font-size:clamp(46px,4.2vw,68px)}.homelab-page__copy--4 p{max-width:43ch}.homelab-page__copy p{max-width:42ch;color:var(--lab-muted);letter-spacing:-.016em;text-wrap:pretty;margin:clamp(22px,2.7vh,32px) 0 0;font-size:clamp(15px,1.08vw,18px);line-height:1.48}.homelab-page__copy a{color:var(--lab-blue);letter-spacing:-.02em;pointer-events:auto;border-bottom:1px solid #175cff85;align-items:center;gap:.38em;margin-top:clamp(22px,2.8vh,32px);padding-bottom:6px;font-size:clamp(14px,1vw,16px);font-weight:500;text-decoration:none;display:inline-flex}.homelab-page__copy a span{transition:transform .22s cubic-bezier(.22,1,.36,1);display:inline-block}.homelab-page__rack-art,.homelab-page__map-art{z-index:4;position:absolute;inset:clamp(76px,8vh,96px) 1.5vw clamp(26px,3.5vh,42px) 40%}.homelab-page__rack-art{opacity:var(--rack-opacity);pointer-events:auto;will-change:opacity}.homelab-page__map-art{z-index:5;opacity:var(--map-opacity);pointer-events:none;transform:translate3d(0, var(--map-y), 0);will-change:transform, opacity;inset:12% -2% 8% 29%}.homelab-page__storage-art{z-index:6;opacity:var(--server-opacity);pointer-events:none;transform:translate3d(var(--server-x), var(--server-y), 0);will-change:transform, opacity;position:absolute;inset:6% -4% 42% 46%}.storage-blueprint,.storage-blueprint__canvas{position:absolute;inset:0}.storage-blueprint{opacity:0}.storage-blueprint.is-ready,.storage-blueprint.is-failed{opacity:1}.storage-blueprint__canvas{width:100%;height:100%;display:block;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 8% 94%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 8% 94%,#0000 100%)}.storage-blueprint__fallback{border:1px solid var(--lab-blue);grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(6,1fr);gap:5px;height:36%;padding:10px;display:none;position:absolute;top:31%;left:20%;right:5%;transform:skewY(-2deg)}.storage-blueprint.is-failed .storage-blueprint__fallback{display:grid}.storage-blueprint__fallback i{border:1px solid var(--lab-blue)}.homelab-page__field-notes{z-index:11;margin:0;padding:0;list-style:none;position:absolute;bottom:clamp(46px,6.5vh,68px);left:50%;right:clamp(38px,4.8vw,72px)}.homelab-page__field-notes li{--field-opacity:var(--field-note-1-opacity);--field-y:var(--field-note-1-y,18px);--field-rule:var(--field-note-1-rule,0);min-height:clamp(82px,9.8vh,96px);opacity:var(--field-opacity);transform:translate3d(0, var(--field-y), 0);will-change:opacity, transform;align-items:center;display:flex;position:relative}.homelab-page__field-notes li:nth-child(2){--field-opacity:var(--field-note-2-opacity);--field-y:var(--field-note-2-y,18px);--field-rule:var(--field-note-2-rule,0)}.homelab-page__field-notes li:nth-child(3){--field-opacity:var(--field-note-3-opacity);--field-y:var(--field-note-3-y,18px);--field-rule:var(--field-note-3-rule,0)}.homelab-page__field-notes li:nth-child(4){--field-opacity:var(--field-note-4-opacity);--field-y:var(--field-note-4-y,18px);--field-rule:var(--field-note-4-rule,0)}.homelab-page__field-notes li:before,.homelab-page__field-notes li:last-child:after{background:var(--lab-rule);content:"";height:1px;transform:scaleX(var(--field-rule));transform-origin:0;position:absolute;left:0;right:0}.homelab-page__field-notes li:before{top:0}.homelab-page__field-notes li:last-child:after{bottom:0}.homelab-page__field-meta{color:#31466bad;letter-spacing:.07em;text-transform:uppercase;align-items:center;gap:9px;font-family:Commit Mono,ui-monospace,monospace;font-size:clamp(10px,.67vw,11px);display:flex}.homelab-page__field-meta>span:first-child{color:var(--lab-blue);font-weight:700}.homelab-page__field-meta i{background:var(--lab-blue);width:14px;height:1px}.homelab-page__field-copy{gap:4px;min-width:0;display:grid}.homelab-page__field-copy strong{letter-spacing:-.025em;font-size:clamp(14px,.96vw,16px);font-weight:530;line-height:1.2}.homelab-page__field-description{color:var(--lab-muted);letter-spacing:-.015em;font-size:clamp(11.5px,.8vw,13px);line-height:1.3}.blueprint,.blueprint__canvas,.blueprint__wash,.blueprint__floor,.blueprint__fallback{position:absolute;inset:0}.blueprint{isolation:isolate;opacity:0;transition:none;transform:none}.blueprint.is-ready,.blueprint.is-failed{opacity:1;transform:none}.blueprint__wash{z-index:0;background:radial-gradient(at 51% 47%,#c4e6ff40,#0000 59%)}.blueprint__floor{z-index:1;opacity:.38;transform-origin:bottom;background-image:linear-gradient(#175cff38 1px,#0000 1px),linear-gradient(90deg,#175cff38 1px,#0000 1px);background-size:52px 32px;height:35%;inset:auto 1% 1%;transform:perspective(500px)rotateX(63deg);-webkit-mask-image:radial-gradient(#000,#0000 72%);mask-image:radial-gradient(#000,#0000 72%)}.blueprint__canvas{z-index:3;width:100%;height:100%;display:block;-webkit-mask-image:linear-gradient(#0000,#000 8% 94%,#0000);mask-image:linear-gradient(#0000,#000 8% 94%,#0000)}.blueprint__fallback{z-index:2;border:1px solid var(--lab-blue);width:38%;height:64%;margin:auto;display:none}.blueprint.is-failed .blueprint__fallback{display:block}.blueprint__fallback span{border:1px solid var(--lab-blue);height:13%;position:absolute;left:8%;right:8%}.blueprint__fallback span:first-child{top:12%}.blueprint__fallback span:nth-child(2){top:31%}.blueprint__fallback span:nth-child(3){top:50%}.blueprint__fallback span:nth-child(4){top:69%}.network-map{width:100%;height:100%;position:relative}.network-map__svg{width:min(100%,1180px);color:var(--lab-blue-soft);position:absolute;top:50%;left:50%;overflow:visible;transform:translate(-50%,-50%)}.network-map__land{opacity:.9}.network-map__route,.network-map__leaders path{fill:none;stroke:var(--lab-blue);vector-effect:non-scaling-stroke}.network-map__route{stroke-width:1.45px;stroke-dasharray:700;stroke-dashoffset:var(--route-offset)}.network-map__route--local{stroke-dasharray:80;stroke-dashoffset:var(--local-route-offset)}.network-map__route--local-b{opacity:.72}.network-map__remote{opacity:var(--remote-opacity)}.network-map__leaders path{opacity:.56;stroke-width:.8px}.network-map__nodes circle{fill:var(--lab-blue);stroke:var(--lab-paper);stroke-width:4px}.network-map__svg-labels text{fill:var(--lab-ink);stroke:var(--lab-paper);stroke-width:5px;paint-order:stroke fill}.network-map__city{letter-spacing:-.015em;font-family:Instrument Sans,system-ui,sans-serif;font-size:14px;font-weight:600}.network-map__role{fill:#2f4368;letter-spacing:.02em;font-family:Commit Mono,ui-monospace,monospace;font-size:10px;font-weight:400}.network-map__source{color:#31466b80;letter-spacing:.08em;font-family:Commit Mono,ui-monospace,monospace;font-size:9px;position:absolute;bottom:7%;right:5%}.homelab-page__progress{z-index:15;color:#384a6b85;pointer-events:none;flex-direction:column;align-items:center;gap:10px;width:12px;font-family:Commit Mono,ui-monospace,monospace;font-size:8px;display:flex;position:absolute;top:50%;right:clamp(14px,2vw,30px);transform:translateY(-50%)}.homelab-page__progress i{background:var(--lab-rule);width:1px;height:58px;display:block;position:relative;overflow:hidden}.homelab-page__progress b{background:var(--lab-blue);transform:scaleY(var(--story-progress));transform-origin:top;position:absolute;inset:0}.homelab-page__scroll-cue{z-index:12;color:#3d4b6694;letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:12px;font-family:Commit Mono,ui-monospace,monospace;font-size:10.5px;display:flex;position:absolute;bottom:27px;left:clamp(38px,4.8vw,72px)}.homelab-page__scroll-cue i{background:var(--lab-rule);width:34px;height:1px;display:block;position:relative;overflow:hidden}.homelab-page__scroll-cue i:after{background:var(--lab-blue);content:"";animation:1.8s ease-in-out .9s infinite homelab-scroll-cue;position:absolute;inset:0}.homelab-page__footer{z-index:12;opacity:var(--footer-opacity);color:#4554719e;letter-spacing:.07em;text-transform:uppercase;justify-content:flex-end;font-family:Commit Mono,ui-monospace,monospace;font-size:10.5px;display:flex;position:absolute;bottom:27px;left:38%;right:clamp(38px,4.8vw,72px)}.homelab-page__footer a{color:inherit;text-decoration:none}@media (hover:hover) and (pointer:fine){.homelab-page__footer a:hover{color:var(--lab-blue)}.homelab-page__copy a:hover span{transform:translate(3px,-3px)}}@media (width<=980px){.homelab-page__copy-deck{right:52%}.homelab-page h1,.homelab-page h2,.homelab-page__copy--2 h2,.homelab-page__copy--3 h2,.homelab-page__copy--4 h2{font-size:clamp(42px,5.4vw,56px)}.homelab-page__rack-art{left:42%}.homelab-page__map-art{left:30%}.homelab-page__storage-art{left:44%}.homelab-page__field-notes{left:50%}}@media (width<=760px){.homelab-page__story{height:940svh}.homelab-page__stage{min-height:640px}.homelab-page__header{padding:22px 20px}.homelab-page__marker{gap:11px;font-size:10.5px;top:max(84px,11vh);left:20px}.homelab-page__copy-deck{height:43%;inset:max(122px,16vh) 20px auto}.homelab-page h1,.homelab-page h2,.homelab-page__copy--2 h2,.homelab-page__copy--3 h2,.homelab-page__copy--4 h2{max-width:10.2em;font-size:clamp(36px,9.8vw,46px);line-height:.99}.homelab-page__copy--2 h2,.homelab-page__copy--3 h2,.homelab-page__copy--4 h2{max-width:10.5em}.homelab-page__copy p{max-width:44ch;margin-top:16px;font-size:clamp(15px,3.5vw,16px);line-height:1.46}.homelab-page__rack-art{inset:52% -5% 2%}.homelab-page__map-art{inset:53% -18% 7%}.homelab-page__storage-art{inset:48% -8% 29% 7%}.homelab-page__field-notes{bottom:34px;left:20px;right:20px}.homelab-page__field-notes li{min-height:clamp(74px,9.2vh,86px)}.homelab-page__field-copy{gap:2px}.homelab-page__field-copy strong{font-size:14px}.homelab-page__field-description{font-size:12px;line-height:1.32}.blueprint__floor{bottom:5%}.homelab-page__progress{display:none}.homelab-page__scroll-cue{left:20px}.homelab-page__footer{font-size:10.5px;bottom:25px;left:45%;right:20px}.homelab-page__footer span{display:none}}@media (width<=480px){.homelab-page__brand{font-size:15px}.homelab-page__marker-label{max-width:24ch}.homelab-page h1,.homelab-page h2,.homelab-page__copy--2 h2,.homelab-page__copy--3 h2{font-size:clamp(34px,9.6vw,42px)}.homelab-page__copy p{font-size:15px}.homelab-page__rack-art{top:55%}.homelab-page__map-art{top:56%}.homelab-page__copy--4 h2{font-size:clamp(31px,8.5vw,37px)}.homelab-page__copy--4 p{max-width:43ch;font-size:14.5px;line-height:1.44}.homelab-page__copy a{margin-top:14px;font-size:14px}.homelab-page__storage-art{top:51%;bottom:28%}.homelab-page__field-meta{font-size:10px}.homelab-page__field-description{font-size:11.5px}}@media (prefers-reduced-motion:reduce){.homelab-page:before,.homelab-page__scroll-cue i:after{animation:none}}@keyframes homelab-page-load{0%{transform:scaleX(0)}70%{transform-origin:0;transform:scaleX(1)}71%{transform-origin:100%}to{transform-origin:100%;transform:scaleX(0)}}@keyframes homelab-index-in{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes homelab-scroll-cue{0%,20%{transform:translate(-100%)}65%,to{transform:translate(100%)}}
