@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-cyrillic-ext-wght-normal-lLTsRRxN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-ext-wght-normal-EocZY2iu.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#fbfaf6;--paper-2:#f0eee7;--card:#fff;--ink:#16171c;--ink-2:#50535d;--ink-3:#8d909a;--line:#16171c14;--line-2:#16171c24;--brand:#26c97d;--brand-hi:#7cf2b4;--brand-lo:#139259;--brand-soft:#26c97d24;--brand-ink:#0d7a49;--shadow-sm:0 1px 2px #1011160f, 0 2px 8px #1011160a;--ease:cubic-bezier(.2, .8, .2, 1);--font:"Plus Jakarta Sans Variable", system-ui, sans-serif;--mono:"JetBrains Mono Variable", ui-monospace, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#121317;--paper-2:#1c1d23;--card:#191a20;--ink:#f3f2ee;--ink-2:#b6b8bf;--ink-3:#7c7f88;--line:#ffffff12;--line-2:#ffffff21;--brand-soft:#26c97d2e;--brand-ink:var(--brand-hi);--shadow-sm:0 1px 2px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.55}h1,h2,p,ul,ol,figure{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit;-webkit-text-decoration-color:var(--brand);text-decoration-color:var(--brand);text-underline-offset:3px;text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.mono{font-family:var(--mono);letter-spacing:.02em;font-size:12.5px}.muted{color:var(--ink-3)}kbd{font-family:var(--font);color:var(--ink-2);background:var(--card);border:1px solid var(--line-2);box-shadow:0 2px 0 var(--line-2);border-radius:7px;margin:0 2px;padding:2px 9px 1px;font-size:12px;font-weight:700;line-height:1.4;display:inline-block}.wrap{max-width:1040px;margin:0 auto;padding-inline:24px}.top{border-bottom:1px solid var(--line)}.top-in{justify-content:space-between;align-items:center;gap:16px;height:64px;display:flex}.logo{align-items:center;gap:10px;text-decoration:none;display:flex}.logo svg{transition:transform .5s var(--ease)}.logo:hover svg{transform:rotate(90deg)}.logo-word{letter-spacing:-.03em;font-size:19px;font-weight:800}.top-nav{align-items:center;gap:6px;display:flex}.top-nav>a:not(.btn){color:var(--ink-2);transition:background .2s var(--ease), color .2s var(--ease);border-radius:10px;padding:8px 12px;font-size:14.5px;font-weight:600;text-decoration:none}.top-nav>a:not(.btn):hover{background:var(--paper-2);color:var(--ink)}.foot{border-top:1px solid var(--line);color:var(--ink-3);margin-top:48px;font-size:13.5px}.foot-in{flex-wrap:wrap;justify-content:space-between;gap:12px 24px;padding-top:24px;padding-bottom:32px;display:flex}.foot-links{flex-wrap:wrap;gap:4px 18px;display:flex}.foot-links a{color:var(--ink-2);font-weight:600;text-decoration:none}.foot-links a:hover{color:var(--ink)}.btn{white-space:nowrap;height:40px;transition:transform .2s var(--ease), box-shadow .2s var(--ease), background .2s var(--ease);border-radius:12px;justify-content:center;align-items:center;padding:0 16px;font-size:14px;font-weight:700;text-decoration:none;display:inline-flex}.btn:active{transform:translateY(1px)scale(.98)}.btn-ink{background:var(--ink);color:var(--paper);box-shadow:var(--shadow-sm)}.btn-brand{background:var(--brand);color:#07351f;box-shadow:inset 0 -4px 0 var(--brand-lo)}.btn-brand:hover{background:#3ad48c}.btn-brand:active{box-shadow:inset 0 -2px 0 var(--brand-lo)}.btn-big{border-radius:16px;height:56px;padding:0 28px 4px;font-size:17px}.phead{padding-top:48px}.back{color:var(--ink-3);margin-bottom:14px;font-size:14px;font-weight:600;text-decoration:none;display:inline-block}.back:before{content:"← "}.back:hover{color:var(--ink)}h1{letter-spacing:-.035em;font-size:clamp(32px,5.2vw,48px);font-weight:800;line-height:1.08}.lede{max-width:62ch;color:var(--ink-2);margin-top:14px;font-size:18px}h2{letter-spacing:-.02em;margin-bottom:14px;font-size:22px;font-weight:800;line-height:1.25}.sect{padding-top:44px}.sect>p{max-width:68ch;color:var(--ink-2)}.sect>p+*{margin-top:20px}.cube-scene{width:calc(var(--s) * 1.5);height:calc(var(--s) * 1.6);flex:none;place-items:center;display:grid}.cube{width:var(--s);height:var(--s);transform-style:preserve-3d;transition:transform .8s var(--ease);position:relative;transform:rotateX(-30deg)rotateY(-45deg)}.cube-scene:hover .cube,.pcard:hover .cube{transform:rotateX(-22deg)rotateY(-24deg)}.cube-face{image-rendering:pixelated;backface-visibility:hidden;filter:brightness(var(--b,1));background-repeat:no-repeat;position:absolute;inset:0}.see-through .cube-face{backface-visibility:visible}.cube-face.top{transform:rotateX(90deg) translateZ(calc(var(--s) / 2))}.cube-face.bottom{transform:rotateX(-90deg) translateZ(calc(var(--s) / 2));--b:.5}.cube-face.front{transform:translateZ(calc(var(--s) / 2));--b:.8}.cube-face.back{transform:rotateY(180deg) translateZ(calc(var(--s) / 2));--b:.8}.cube-face.right{transform:rotateY(90deg) translateZ(calc(var(--s) / 2));--b:.64}.cube-face.left{transform:rotateY(-90deg) translateZ(calc(var(--s) / 2));--b:.64}@keyframes tex-frames{0%{background-position:0 0}to{background-position:0 calc(var(--tex) * var(--frames) * -1)}}.tile{image-rendering:pixelated;background-repeat:no-repeat;border-radius:6px;flex:none;display:inline-block;box-shadow:inset 0 0 0 1px #00000014}.swatch{max-width:100%;image-rendering:pixelated;background-repeat:repeat;border-radius:8px;display:block}.facade{border-radius:8px;width:fit-content;display:grid;overflow:hidden}.facade .tile{box-shadow:none;border-radius:0}.stage{background:var(--paper-2);border:1px solid var(--line);border-radius:24px;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:28px;padding:26px 16px 18px;display:grid}.stage-slot{flex-direction:column;align-items:center;gap:8px;display:flex}.stage-role,.role-chip{background:var(--brand-soft);color:var(--brand-ink);border-radius:8px;padding:2px 9px;font-size:12.5px;font-weight:700}.cta-row{flex-wrap:wrap;align-items:center;gap:14px 20px;margin-top:24px;display:flex}.cta-note{max-width:44ch;color:var(--ink-3);font-size:14px}.facts{color:var(--ink-2);flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.facts li{border:1px solid var(--line-2);border-radius:10px;padding:5px 10px}.blocks{background:var(--card);border:1px solid var(--line);border-radius:20px}.brow{grid-template-columns:56px 1fr minmax(0,300px);align-items:center;gap:18px;padding:16px 20px;display:grid}.brow+.brow{border-top:1px solid var(--line)}.brow-head{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.brow-name{letter-spacing:-.01em;font-size:17px;font-weight:700}.brow-id{color:var(--ink-3);overflow-wrap:anywhere;margin-top:2px;display:block}.brow-hint{color:var(--ink-3);margin-top:2px;font-size:14px}.brow-meta{text-align:right;flex-direction:column;align-items:flex-end;gap:8px;display:flex}.since{color:var(--ink-2)}.shapes{flex-wrap:wrap;justify-content:flex-end;gap:5px;display:flex}.shapes li{border:1px solid var(--line-2);color:var(--ink-2);border-radius:8px;padding:2px 8px;font-size:12.5px;font-weight:600}.shapes .mono{color:var(--ink-3);font-size:11px}.shapes-none{color:var(--ink-3);font-size:13px}.two{grid-template-columns:1fr 1fr;gap:40px;display:grid}.steps,.rules{counter-reset:n;gap:12px;max-width:68ch;display:grid}.steps li,.rules li{counter-increment:n;color:var(--ink-2);padding-left:40px;position:relative}.steps li:before,.rules li:before{content:counter(n);background:var(--card);border:1px solid var(--line-2);width:26px;height:26px;box-shadow:0 2px 0 var(--line-2);font-family:var(--mono);color:var(--ink);border-radius:8px;place-items:center;font-size:12px;font-weight:600;display:grid;position:absolute;top:-1px;left:0}.rules li{color:var(--ink);font-weight:600}.rules+.muted{margin-top:16px;font-size:14px}.pgrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.pcard{background:var(--card);border:1px solid var(--line);transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);border-radius:20px;flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.pcard:hover{border-color:var(--line-2);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.pcard:active{transform:translateY(0)scale(.99)}.pcard-stage{background:var(--paper-2);justify-content:center;padding:16px 8px 10px;display:flex}.cube-row{grid-template-columns:repeat(3,auto);row-gap:2px;display:grid}.pcard-body{flex-direction:column;gap:4px;padding:14px 18px 18px;display:flex}.pcard-name{letter-spacing:-.01em;font-size:17px;font-weight:700}.pcard-blurb{color:var(--ink-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;display:-webkit-box;overflow:hidden}.more{margin-top:18px;font-weight:700}.roles{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.roles li{background:var(--card);border:1px solid var(--line);border-radius:18px;align-items:center;gap:10px;padding:12px 16px 12px 8px;display:flex}.roles-text{color:var(--ink-2);flex-direction:column;font-size:14px;line-height:1.45;display:flex}.roles-text strong{color:var(--ink);font-size:16px}.examples{flex-wrap:wrap;gap:16px;display:flex}.example{background:var(--card);border:1px solid var(--line);border-radius:20px;max-width:100%;padding:16px}.example figcaption{color:var(--ink-2);flex-direction:column;margin-top:12px;font-size:14px;display:flex}.example strong{color:var(--ink);font-size:16px}.example .mono{color:var(--ink-3)}.roof-checks{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:680px;display:grid}.roof-check{background:var(--card);border:1px solid var(--line);border-radius:16px;align-items:center;gap:12px;padding:10px 14px 10px 10px;font-size:14px;display:flex}.roof-name{flex:1;font-size:15px;font-weight:700}.roof-check .ok{color:var(--brand-ink);font-weight:700}.roof-check .no{color:var(--ink-3)}.chips{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.chips a{background:var(--card);border:1px solid var(--line-2);height:36px;color:var(--ink-2);transition:background .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease), transform .2s var(--ease);border-radius:10px;align-items:center;gap:7px;padding:0 12px;font-size:14px;font-weight:650;text-decoration:none;display:inline-flex}.chips a:hover{border-color:var(--ink-3);color:var(--ink)}.chips a:active{transform:translateY(1px)scale(.98)}.chips a[aria-current=page]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.chip-n{font-family:var(--mono);color:var(--ink-3);font-size:11.5px}.chips a[aria-current=page] .chip-n{color:inherit;opacity:.6}.chips .chip-random{background:var(--brand-soft);color:var(--brand-ink);border-color:#0000}.chips .chip-random:before{content:"↻";font-weight:800}.chips .chip-random:hover{border-color:var(--brand);color:var(--brand-ink)}.chips-sm{margin-top:10px}.chips-sm a{height:30px;font-size:13px}a.brow-name{text-decoration:none}a.brow-name:hover{text-decoration:underline;-webkit-text-decoration-color:var(--brand);text-decoration-color:var(--brand)}.bgrid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;display:grid}.bgrid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=860px){.bgrid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}.bcard{background:var(--card);border:1px solid var(--line);min-width:0;transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);border-radius:14px;align-items:center;gap:12px;padding:8px 12px 8px 8px;text-decoration:none;display:flex}.bcard:hover{border-color:var(--line-2);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.bcard:active{transform:translateY(0)scale(.99)}.bcard-cube{padding-left:2px}.bcard-cube:hover .cube{transform:rotateX(-22deg)rotateY(-24deg)}.bcard-name{overflow-wrap:anywhere;font-size:14.5px;font-weight:650;line-height:1.3}.bstage{flex-wrap:wrap;justify-content:center;align-items:center;gap:28px 48px;padding:28px 24px;display:flex}.vrow{grid-template-columns:1fr auto;align-items:baseline;gap:0 12px;padding:12px 18px;display:grid}.vrow+.vrow{border-top:1px solid var(--line)}.vrow-name{font-weight:700}.vrow .brow-id{grid-area:2/1}.vrow .since{grid-area:1/2/span 2;align-self:center}.role-list{gap:10px;display:grid}.role-list li{align-items:baseline;gap:10px;font-size:14px;display:flex}.role-list .role-chip{text-align:center;flex:none;min-width:64px}.plain-list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px 24px;font-weight:600;display:grid}@media (width<=860px){.two{grid-template-columns:1fr}.roles{grid-template-columns:repeat(2,1fr)}.brow{grid-template-columns:56px 1fr}.brow-meta{text-align:left;grid-column:2;align-items:flex-start}.shapes{justify-content:flex-start}}@media (width<=620px){.wrap{padding-inline:16px}.top-nav>a:not(.btn){padding:8px}.phead{padding-top:32px}.stage{grid-template-columns:repeat(3,1fr);row-gap:18px}.roles,.roof-checks{grid-template-columns:1fr}.examples{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:10px;display:grid}.example{padding:12px}.facade,.swatch{zoom:.7}.brow{gap:14px;padding:14px 16px}.brow-hint{display:none}.btn-big{width:100%}.bgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.bstage .swatch{display:none}}@media (width<=400px){.top-nav .btn{display:none}}@media (prefers-reduced-motion:reduce){*,:before{transition:none!important;animation:none!important}}
