.s-full{--st: var(--lev)}.s-partial{--st: var(--lav)}.s-none{--st: var(--ember-ink)}.s-na,.s-nv{--st: var(--text-3)}.lg-tile{display:grid;place-items:center;width:28px;height:28px;padding:4px;border-radius:8px;background:#fff;border:1px solid var(--hair);overflow:hidden}.lg-tile.dk{background:#1d2023;border-color:#ffffff1f}.lg-tile svg{width:100%;height:100%}.lg-tile--us{background:var(--card);padding:3px}.cp-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,1rem + 4vw,5rem);align-items:center;padding-block:clamp(2.5rem,1.5rem + 4vw,5rem) clamp(2.5rem,2rem + 3vw,4.5rem)}.cp-hero__txt{display:grid;gap:1.25rem;justify-items:start}.cp-hero h1{font-size:clamp(2.5rem,1.4rem + 4.4vw,4.75rem);text-wrap:balance}.cp-hero__em{color:var(--lav)}.cp-hero .lede{max-width:34rem}.cp-hero__meta{font-size:var(--t-xs);color:var(--text-3);letter-spacing:.04em}.cp-hero__cta{display:flex;flex-wrap:wrap;gap:.75rem}.cp-stage{--r: clamp(9rem, 4rem + 15vw, 16rem);position:relative;display:grid;place-items:center;min-height:clamp(22rem,14rem + 30vw,36rem);perspective:1600px;--fx-speed: 24px}.cp-stage__floor{position:relative;width:0;height:0;transform-style:preserve-3d;transform:rotateX(58deg) rotate(-32deg)}.cp-stage__ring{position:absolute;left:calc(var(--r) * -1.12);top:calc(var(--r) * -1.12);width:calc(var(--r) * 2.24);height:calc(var(--r) * 2.24);border-radius:50%;border:1px dashed var(--hair);background:radial-gradient(closest-side,color-mix(in srgb,var(--lav) 14%,transparent),transparent 100%)}.cp-node{--ang: calc(var(--a) * 40deg + 30deg);position:absolute;left:0;top:0;transform-style:preserve-3d;transform:rotate(var(--ang)) translate(var(--r)) rotate(calc(var(--ang) * -1))}.cp-node--us{transform:none}.cp-node__shadow{position:absolute;left:-1.6rem;top:-1.1rem;width:3.2rem;height:2.2rem;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.45),transparent)}.cp-node--us .cp-node__shadow{left:-3.2rem;top:-2.2rem;width:6.4rem;height:4.4rem}.cp-node__tile{position:absolute;left:-1.4rem;bottom:0;width:2.8rem;height:2.8rem;padding:.5rem;border-radius:.8rem;transform-origin:50% 100%;transform:rotate(32deg) rotateX(-58deg);box-shadow:0 10px 24px -8px #00000080;animation:cp-bob 5s ease-in-out var(--d) infinite}.cp-node__tile.lg-tile{width:2.8rem;height:2.8rem;padding:.5rem;border-radius:.8rem}.cp-node--us .cp-node__tile{left:-2.6rem;width:5.2rem;height:5.2rem;padding:.8rem;border-radius:1.4rem;background:var(--card);border:1px solid var(--hair);box-shadow:0 24px 60px -12px color-mix(in srgb,var(--lav) 55%,transparent);display:grid}.cp-node__tile svg{width:100%;height:100%}.cp-node__name{position:absolute;left:0;top:.9rem;transform:translate(-50%) rotate(32deg) rotateX(-58deg);font-family:var(--f-mono);font-size:.6875rem;letter-spacing:.04em;white-space:nowrap;color:var(--text-2)}.cp-node--us .cp-node__name{top:1.6rem;color:var(--text)}@keyframes cp-bob{0%,to{translate:0 0}50%{translate:0 -.5rem}}.cp-matrix,.cp-behind,.cp-each,.cp-not,.cp-pick{padding-block:var(--space-sec) 0}.cp-asof{margin-top:1.25rem;max-width:48rem}.cx-r{position:absolute;opacity:0;pointer-events:none}.cx-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem;margin-bottom:1rem}.cx-filters{display:inline-flex;flex-wrap:wrap;gap:.4rem}.cx-filters label{display:inline-flex;align-items:center;min-height:2.75rem;padding:0 1.1rem;border:1px solid var(--edge);border-radius:9999px;font-size:var(--t-s);cursor:pointer;transition:background .3s var(--out),color .3s var(--out),border-color .3s var(--out)}.cx-filters label:hover{border-color:var(--text)}.cx-notesbtn{margin-left:.6rem}.cx:has(#cx-all:checked) label[for=cx-all],.cx:has(#cx-self:checked) label[for=cx-self],.cx:has(#cx-host:checked) label[for=cx-host],.cx:has(#cx-notes:checked) label[for=cx-notes]{background:var(--text);color:var(--canvas);border-color:var(--text)}.cx:has(#cx-all:focus-visible) label[for=cx-all],.cx:has(#cx-self:focus-visible) label[for=cx-self],.cx:has(#cx-host:focus-visible) label[for=cx-host],.cx:has(#cx-notes:focus-visible) label[for=cx-notes]{outline:2px solid var(--lav);outline-offset:3px}.cx:has(#cx-self:checked) .k-hosted,.cx:has(#cx-host:checked) .k-self-hosted:not(.us){display:none}.cx-legend{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;font-size:var(--t-xs);color:var(--text-2)}.cx-legend li{display:inline-flex;align-items:center;gap:.35rem}.cx-legend li>span{color:var(--st);display:grid}.cx-legend svg{width:16px;height:16px}.cx-jump{display:flex;flex-wrap:wrap;gap:.4rem 1.25rem;margin-bottom:1rem;font-family:var(--f-mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.cx-jump a{display:inline-flex;align-items:center;min-height:2rem;color:var(--text-2);text-decoration:none;border-bottom:1px solid transparent}.cx-jump a:hover{color:var(--lav);border-color:var(--lav)}.cx-desk{display:block}.cx-mob{display:none}.cx-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:var(--t-s)}.cx-table th,.cx-table td{padding:.35rem .25rem;text-align:center;border-bottom:1px solid var(--hair-soft)}.cx-table thead th{position:sticky;top:4rem;z-index:5;padding-block:.7rem .6rem;background:var(--canvas);border-bottom:1px solid var(--hair)}.cx-table .cx-corner,.cx-table tbody th[scope=row],.cx-sum th{width:24%;text-align:left;padding-left:.25rem}.cx-table tbody th[scope=row],.cx-sum th{position:sticky;left:0;z-index:2;background:var(--canvas);font-weight:500;font-size:.8125rem;line-height:1.3}.cx-corner{z-index:6!important}.cx-col{vertical-align:bottom}.cx-mark{margin:0 auto .4rem}.cx-n{display:block;font-family:var(--f-display);font-size:.8125rem;font-weight:600;color:var(--text);overflow-wrap:anywhere}.cx-k{display:block;font-family:var(--f-mono);font-size:.625rem;font-weight:450;letter-spacing:.03em;color:var(--text-3)}.cx-sum td,.cx-sum th{padding-block:.55rem;border-bottom:1px solid var(--hair);background:var(--canvas)}.cx-sum,.cx-table thead .cx-sum th,.cx-table thead .cx-sum td{position:static}.cx-sum th{position:static!important;font-weight:450;color:var(--text-2)}.cx-sumkey{display:block;font-family:var(--f-mono);font-size:.625rem;color:var(--text-3)}.cx-bars{display:flex;height:6px;margin:0 .35rem .3rem;gap:1px;border-radius:3px;overflow:hidden;background:var(--hair-soft)}.cx-bars i{display:block;min-width:0}.cx-bars .b-full{background:var(--lev)}.cx-bars .b-partial{background:var(--lav)}.cx-bars .b-none{background:var(--ember-ink)}.cx-bars .b-nv{background:var(--edge)}.cx-cnt{display:block;font-size:.625rem;color:var(--text-2)}.cx-grp th{padding-block:1.4rem .5rem!important;font-family:var(--f-mono);font-size:.6875rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;text-align:left;color:var(--lav);background:var(--canvas);scroll-margin-top:9rem}.cx-row th .cx-rn{position:absolute;opacity:0;pointer-events:none}.cx-rl{display:flex;align-items:flex-start;gap:.45rem;cursor:pointer}.cx-plus{position:relative;flex:none;width:.7rem;height:.7rem;margin-top:.3rem;color:var(--text-3)}.cx-plus:before,.cx-plus:after{content:"";position:absolute;left:0;right:0;top:50%;height:1.5px;margin-top:-.75px;background:currentColor;transition:transform .35s var(--settle)}.cx-plus:after{transform:rotate(90deg)}.cx-rl:hover .cx-plus{color:var(--lav)}.cx-row:has(.cx-rn:focus-visible) .cx-rl{outline:2px solid var(--lav);outline-offset:2px;border-radius:4px}.cx-row:has(.cx-rn:checked) .cx-plus:after,.cx:has(#cx-notes:checked) .cx-plus:after{transform:rotate(0)}.cx-cell{position:relative;height:2.5rem}.cx-ic{display:inline-grid;width:20px;height:20px;color:var(--st);vertical-align:middle}.cx-ic svg,.cx-subg svg{width:100%;height:100%}.cx-srcdot{position:absolute;right:.2rem;top:.2rem;width:10px;height:10px;color:var(--text-3)}.cx-srcdot svg{width:100%;height:100%}.cx-cell{cursor:default}.cx-read{position:fixed;left:max(var(--margin),calc((100vw - var(--maxw)) / 2 + var(--margin)));z-index:30;width:min(21.5rem,calc(100vw - 2 * var(--margin)));padding:.8rem 1rem;background:var(--card);border:1px solid var(--edge);border-radius:var(--r-sm);box-shadow:0 18px 40px -16px #00000080;font-size:var(--t-s);color:var(--text-2)}.cx-read[hidden]{display:none}.cx-read[data-pos=bottom]{bottom:1rem;top:auto}.cx-read[data-pos=top]{top:10.5rem}.cx-read__t b{color:var(--text)}.cx-read__a{display:flex;gap:1rem;align-items:center;margin-top:.4rem}.cx-read__x{min-height:1.5rem;padding:0 .4rem;border:0;background:transparent;color:var(--text-3);font-size:var(--t-xs);cursor:pointer}.cx-unstated{margin-top:.7rem;font-size:var(--t-xs);color:var(--text-3)}.cx-table td.us,.cx-table th.us{background:color-mix(in srgb,var(--lav) calc(5% + var(--p) * 9%),var(--canvas))}.cx-table thead th.us{background:color-mix(in srgb,var(--lav) calc(10% + var(--p) * 14%),var(--canvas))}.cx-sub{display:none}.cx-sub td{padding:.9rem .5rem 1.2rem;text-align:left;background:color-mix(in srgb,var(--card) 70%,var(--canvas))}.cx-row:has(.cx-rn:checked)+.cx-sub,.cx:has(#cx-notes:checked) .cx-sub{display:table-row}.cx-subgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.9rem 1.25rem}.cx:has(#cx-self:checked) .cx-subgrid .k-hosted,.cx:has(#cx-host:checked) .cx-subgrid .k-self-hosted:not(.us){display:none}.cx-subgrid li{display:grid;grid-template-columns:18px minmax(0,1fr);gap:.5rem;font-size:var(--t-xs);line-height:1.4;color:var(--text-2)}.cx-subg{display:grid;width:18px;height:18px;color:var(--st)}.cx-subgrid b{color:var(--text);font-weight:600}.cx-sublink{margin-left:.4rem;color:var(--lav);white-space:nowrap}.cp-behind__in{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr);gap:clamp(2rem,1rem + 4vw,5rem);align-items:start}.cp-behind .cp-head{position:sticky;top:6rem}.cp-behind__list{border-top:1px solid var(--hair)}.cp-behind__list li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:.2rem .9rem;padding-block:1.1rem;border-bottom:1px solid var(--hair)}.cp-behind__g{grid-row:1 / span 3;display:grid;width:22px;height:22px;margin-top:.15rem;color:var(--st)}.cp-behind__g svg{width:100%;height:100%}.cp-behind__list h3{font-size:1.15rem;font-weight:500}.cp-behind__list p{color:var(--text-2);font-size:var(--t-s)}.cp-behind__list .link{font-size:var(--t-s);color:var(--lav)}.cp-item__src{grid-column:1 / -1;font-size:var(--t-xs);color:var(--text-2)}.cp-item__src summary{cursor:pointer;min-height:2rem;display:flex;align-items:center;font-family:var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.cp-item__src ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem 1.5rem;padding-block:.5rem}.cp-item__src li{padding-left:0}.cp-item__src li:before{display:none}.cp-item__src a{color:var(--lav)}.cp-head{max-width:46rem;margin-bottom:clamp(1.75rem,1.2rem + 2vw,3rem);display:grid;gap:.9rem}.cp-head p{color:var(--text-2);max-width:38rem}.cp-matrix,.cp-each,.cp-not,.cp-pick{padding-block:var(--space-sec) 0}.cp-asof{margin-top:1.25rem;max-width:44rem}.cp-list{border-top:1px solid var(--hair)}.cp-item{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr);gap:clamp(1.5rem,1rem + 3vw,4.5rem);padding-block:clamp(1.75rem,1.2rem + 2vw,3rem);border-bottom:1px solid var(--hair)}.cp-item__who{display:grid;gap:.7rem;align-content:start;justify-items:start}.cp-item h3{font-size:clamp(1.75rem,1.3rem + 1.6vw,2.5rem);font-weight:600;letter-spacing:-.03em}.cp-item__kind{display:inline-flex;align-items:center;gap:.6rem;font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.cp-item__kind img{width:20px;height:20px;object-fit:contain;background:#fff;border-radius:4px;padding:2px}.cp-item__one{color:var(--text-2);max-width:24rem;text-wrap:pretty}.cp-item__what{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 2rem;align-content:start}.cp-item h4{margin-bottom:.7rem;font-size:.6875rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--lav)}.cp-item__what>div:nth-child(1) h4{color:var(--lev)}.cp-item ul{display:grid;gap:.6rem}.cp-item li{position:relative;padding-left:1rem;color:var(--text-2);text-wrap:pretty}.cp-item li:before{content:"";position:absolute;left:0;top:.7em;width:.45rem;height:1px;background:var(--text-3)}.cp-item__pick{grid-column:1 / -1;padding-top:1.1rem;border-top:1px dashed var(--hair);color:var(--text-2)}.cp-item__pick b{color:var(--text);font-weight:600}.cp-not{--gl-inset: auto 0 0 0;--gl-y: 100%;margin-top:var(--space-sec);padding-bottom:var(--space-sec)}.cp-not__list{display:grid}.cp-not__list li{display:grid;grid-template-columns:3rem minmax(0,1fr) minmax(0,1.1fr);gap:.5rem clamp(1rem,.5rem + 2vw,2.5rem);align-items:baseline;padding-block:1.5rem;border-top:1px solid var(--hair)}.cp-not__list li:last-child{border-bottom:1px solid var(--hair)}.cp-not__n{color:var(--ember-ink);font-size:var(--t-s)}.cp-not__list h3{font-size:clamp(1.4rem,1.1rem + 1.2vw,2.1rem);font-weight:500;letter-spacing:-.025em}.cp-not__list p{color:var(--text-2);text-wrap:pretty}.cp-not__more{margin-top:1.5rem;color:var(--text-2)}.cp-pick__list{border-top:1px solid var(--hair)}.cp-pick__list li{display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;padding-block:1.5rem;border-bottom:1px solid var(--hair);font-size:var(--t-lede);transition:padding-left .5s var(--settle)}.cp-pick__list li:hover{padding-left:.75rem}.cp-pick__list b{flex:none;font-family:var(--f-display);font-size:clamp(1.25rem,1rem + 1.2vw,1.9rem);font-weight:600;letter-spacing:-.02em;color:var(--lav);text-align:right}.cp-pick__cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.25rem}@media(max-width:900px){.cp-hero,.cp-item{grid-template-columns:minmax(0,1fr)}.cp-not__list li{grid-template-columns:2.25rem minmax(0,1fr)}.cp-not__list p{grid-column:2}}@media(max-width:600px){.cp-item__what{grid-template-columns:minmax(0,1fr)}.cp-pick__list li{flex-direction:column;gap:.4rem}.cp-pick__list b{text-align:left}.cp-hero__cta .btn{flex:1 1 100%}}@media(prefers-reduced-motion:reduce){.cp-pick__list li{transition:none}}.cp-each{position:relative;overflow:clip}.cp-each>.wrap{position:relative}.cp-giant{position:absolute;top:8%;right:2%;font-family:var(--f-display);font-size:clamp(14rem,40vw,36rem);font-weight:700;line-height:.8;letter-spacing:-.06em;color:var(--hair-soft);pointer-events:none;user-select:none}@media(max-width:1000px){.cx-desk,.cx-jump,.cx-notesbtn{display:none}.cx-mob{display:block}.cx-bar .cx-filters label:not(.cx-notesbtn){display:none}.cx-bar .cx-filters{display:none}.cp-behind__in{grid-template-columns:minmax(0,1fr)}.cp-behind .cp-head{position:static}}.cx-mob__lead{margin-bottom:.8rem;color:var(--text-2)}.cx-pick{display:flex;flex-wrap:wrap;gap:.4rem}.cx-pick label{display:inline-flex;align-items:center;gap:.5rem;min-height:2.75rem;padding:.3rem .9rem .3rem .4rem;border:1px solid var(--edge);border-radius:9999px;font-size:var(--t-s);cursor:pointer}.cx-pick label .lg-tile{width:26px;height:26px;border-radius:50%}.cx-pick .cx-r:checked+label{background:var(--text);color:var(--canvas);border-color:var(--text)}.cx-pick .cx-r:focus-visible+label{outline:2px solid var(--lav);outline-offset:3px}.cx-pane{display:none;flex:1 1 100%;margin-top:1rem}.cx-pick #pj-coolify:checked~.pane-coolify,.cx-pick #pj-dokploy:checked~.pane-dokploy,.cx-pick #pj-caprover:checked~.pane-caprover,.cx-pick #pj-dokku:checked~.pane-dokku,.cx-pick #pj-kamal:checked~.pane-kamal,.cx-pick #pj-vercel:checked~.pane-vercel,.cx-pick #pj-heroku:checked~.pane-heroku,.cx-pick #pj-railway:checked~.pane-railway,.cx-pick #pj-cloud-run:checked~.pane-cloud-run{display:block}.cx-g{border-top:1px solid var(--hair)}.cx-g summary{display:flex;align-items:center;min-height:3rem;cursor:pointer;font-family:var(--f-mono);font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--lav)}.cx-m{padding-block:.8rem;border-top:1px solid var(--hair-soft)}.cx-m__t{margin-bottom:.4rem;font-size:.9375rem;font-weight:600;font-family:var(--f-sans);color:var(--text)}.cx-m p{display:grid;grid-template-columns:20px minmax(0,1fr);gap:.5rem;padding-block:.2rem;font-size:var(--t-s);color:var(--text-2)}.cx-m p>span:first-child{display:grid;width:20px;height:20px;color:var(--st)}.cx-m p svg{width:100%;height:100%}.cx-m b{color:var(--text)}.cx-m a{color:var(--lav);white-space:nowrap}@media(max-width:1100px){.cx-subgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.cp-hero{overflow-x:clip}@media(max-width:600px){.cp-stage{--r: 9.4rem;min-height:24rem}}.cx-col.us .cx-k{color:var(--text-2)}.cp-faq{padding-top:var(--space-sec)}.cp-faq__list{max-width:56rem;padding-block:.5rem}.cp-item__src a{display:inline-block;padding-block:.25rem}
