.fgrid{--fc-a:var(--violet);--fc-b:#2f8cff;--fc-c:#19b389;position:relative}.fgrid-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.fgrid--compact .fgrid-list{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=700px){.fgrid--compact .fgrid-list{grid-template-columns:minmax(0,1fr)}}.fcard-item{min-width:0}.fcard-item[hidden]{display:none}.fgrid-filter{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1.25rem;display:none}.js .fgrid-filter:not([hidden]){display:flex}.fgrid-chip{border:1px solid var(--line);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:999px;padding:.4rem .9rem;font-size:.9rem;transition:background-color .2s,border-color .2s,color .2s}.fgrid-chip:hover{border-color:var(--line-strong)}.fgrid-chip[aria-pressed=true]{border-color:var(--violet);background:var(--violet-tint);color:var(--violet)}.fgrid-chip:focus-visible,.fdlg button:focus-visible,.fdlg a:focus-visible,.fdlg input:focus-visible+span{outline:2px solid var(--violet);outline-offset:2px}.fgrid-status{color:var(--muted);margin-left:auto;font-size:.85rem}.fgroup{margin-top:clamp(3rem,6vw,4.5rem);scroll-margin-top:8.5rem}.fgroup:first-of-type{margin-top:0}.fgroup-head{grid-template-columns:auto 1fr;align-items:baseline;gap:.15rem 1rem;margin-bottom:1.25rem;display:grid}.fgroup-head h2{letter-spacing:-.035em;margin:0;font-size:clamp(1.7rem,3.4vw,2.3rem);font-weight:650}.fgroup-num{font-family:var(--mono);color:var(--fc-a);letter-spacing:.06em;grid-row:span 2;margin:0;font-size:.8rem}.fgroup-intro{color:var(--muted);margin:0}.fgroup[data-cat-section=understand]{--fc-a:#1f6fe8;--fc-b:var(--violet);--fc-c:#0f9a6c}.fgroup[data-cat-section=build]{--fc-a:#0f9a6c;--fc-b:#1f6fe8;--fc-c:var(--violet)}:root[data-theme=dark] .fgroup[data-cat-section=understand]{--fc-a:#5aa0ff}:root[data-theme=dark] .fgroup[data-cat-section=build]{--fc-a:#3dd6a6}.fgrid-bento{grid-template-columns:repeat(6,minmax(0,1fr))}.fcard-item--lg{grid-column:span 4}.fcard-item--sm{grid-column:span 2}@media (width<=1000px){.fcard-item--lg,.fcard-item--sm{grid-column:span 3}}@media (width<=640px){.fgrid-bento{grid-template-columns:minmax(0,1fr)}.fcard-item--lg,.fcard-item--sm{grid-column:auto}}.fcard{border:1px solid var(--line);background:linear-gradient(165deg, color-mix(in srgb, var(--fc-a) 7%, var(--surface)), var(--surface) 60%);height:100%;transition:transform .35s var(--fx-ease,ease), border-color .25s, box-shadow .35s;--fc-ink:color-mix(in srgb, var(--fc-a) 80%, var(--text));border-radius:18px;flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff14,0 20px 40px -32px #00000080}.fcard:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(22rem 11rem at 85% -2rem, color-mix(in srgb, var(--fc-a) 16%, transparent), transparent 70%);position:absolute;inset:0}.fcard:hover{border-color:color-mix(in srgb, var(--fc-a) 45%, var(--line));box-shadow:0 1px 0 #ffffff14 inset, 0 28px 50px -30px color-mix(in srgb, var(--fc-a) 55%, transparent);transform:translateY(-3px)}.fcard>*{z-index:1;position:relative}.fcard>.fcard-body{z-index:auto;position:static}@property --fc-angle{syntax:"<angle>";inherits:false;initial-value:0deg}.fcard:after{content:"";z-index:2;border-radius:inherit;pointer-events:none;opacity:0;background:conic-gradient(from var(--fc-angle), transparent 0 62%, var(--fc-a), var(--fc-b), var(--fc-c), transparent);-webkit-mask-composite:xor;padding:1px;transition:opacity .35s;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.fcard:hover:after,.fcard:has(.fcard-link:focus-visible):after,.fcard--lg:after{opacity:1}.fcard--lg:after{opacity:.55}.fcard--lg:hover:after{opacity:1}.fcard:has(.fcard-link:focus-visible){box-shadow:0 0 0 3px var(--violet-tint)}@media (prefers-reduced-motion:no-preference){.fcard:after{animation:7s linear infinite fc-spin}.fcard:hover:after,.fcard:has(.fcard-link:focus-visible):after{animation-duration:3.2s}}@keyframes fc-spin{to{--fc-angle:360deg}}.fcard-art{box-sizing:border-box;aspect-ratio:16/10;border-bottom:1px solid var(--line);background:linear-gradient(color-mix(in srgb, var(--bg) 40%, var(--surface-2)), color-mix(in srgb, var(--fc-a) 5%, var(--surface)));place-items:center;padding:.85rem;display:grid;overflow:hidden;container-type:size}.fcard-art pre,.fdlg-art pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:min(calc(100cqw / (var(--cols) * .6)), calc(100cqh / (var(--rows) * 1.15)));white-space:pre;letter-spacing:0;font-variant-ligatures:none;color:var(--fc-ink);margin:0;line-height:1.15;transition:color .3s}.fcard.is-hot .fcard-art pre{color:#0000;background:linear-gradient(100deg, var(--fc-a), var(--fc-b), var(--fc-c), var(--fc-a)) 0 0 / 220% 100%;-webkit-background-clip:text;background-clip:text}@media (prefers-reduced-motion:no-preference){.fcard.is-hot .fcard-art pre{animation:3s linear infinite fc-sweep}}@keyframes fc-sweep{to{background-position:-220% 0}}.fcard-body{flex-direction:column;flex:1;gap:.4rem;padding:1rem 1.15rem 1.35rem;display:flex}.fcard-meta{color:var(--muted);justify-content:space-between;align-items:center;gap:.75rem;margin:0;font-size:.78rem;display:flex}.fcard-cat{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase}.fcard-stat{white-space:nowrap}.fcard-stat b{color:var(--fc-ink);font-weight:650}.fcard-title{letter-spacing:-.02em;margin:0;font-size:1.2rem;font-weight:650;line-height:1.3}.fcard-link{color:inherit;text-decoration:none}.fcard-link:before{content:"";z-index:3;border-radius:inherit;position:absolute;inset:0}.fcard-link:focus-visible{outline:none}.fcard-blurb{color:var(--muted);max-width:30ch;margin:0;font-size:.92rem}.fcard-arrow{z-index:1;border:1px solid var(--line);width:2rem;height:2rem;color:var(--muted);transition:color .2s, border-color .2s, background-color .2s, transform .25s var(--fx-ease,ease);pointer-events:none;border-radius:50%;place-items:center;display:grid;bottom:1rem;right:1rem;position:absolute!important}.fcard:hover .fcard-arrow{transform:translate(2px)}.fcard.is-hot .fcard-arrow{border-color:var(--fc-a);background:color-mix(in srgb, var(--fc-a) 14%, transparent);color:var(--fc-ink)}@media (width>=641px){.fcard--lg{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);display:grid}.fcard--lg .fcard-art{aspect-ratio:auto;border-bottom:0;border-left:1px solid var(--line);order:2;min-height:100%}.fcard--lg .fcard-body{order:1;justify-content:center;padding:1.5rem 1.5rem 1.75rem}.fcard--lg .fcard-title{letter-spacing:-.03em;font-size:1.6rem}.fcard--lg .fcard-blurb{font-size:1rem}}@media (width>=641px) and (width<=1000px){.fcard--lg{display:flex}.fcard--lg .fcard-art{aspect-ratio:16/10;border-left:0;border-bottom:1px solid var(--line);order:0}}.fdlg{width:min(46rem,100vw - 1.5rem);max-width:none;max-height:calc(100dvh - 1.5rem);color:var(--text);background:0 0;border:0;padding:0;overflow:visible}.fdlg::backdrop{backdrop-filter:blur(3px);background:#08080c8c}@media (prefers-reduced-motion:no-preference){.fdlg[open]::backdrop{animation:.25s both fdlg-fade}}@keyframes fdlg-fade{0%{opacity:0}}.fdlg-panel{border:1px solid var(--line-strong);border-radius:calc(var(--radius,10px) + 4px);background:var(--surface);transform-origin:0 0;gap:1rem;max-height:calc(100dvh - 1.5rem);padding:clamp(1rem,3vw,1.5rem);display:grid;overflow:auto;box-shadow:0 30px 80px -20px #00000073}.fdlg-head{justify-content:space-between;align-items:start;gap:1rem;display:flex}.fdlg-cat{color:var(--muted);font-family:var(--mono);text-transform:uppercase;letter-spacing:.02em;margin:0;font-size:.75rem}.fdlg-title{letter-spacing:-.025em;margin:.1rem 0 0;font-size:clamp(1.4rem,4vw,1.75rem);font-weight:600}.fdlg-blurb{color:var(--muted);margin:.25rem 0 0}.fdlg-close{border:1px solid var(--line);background:var(--surface);width:2.25rem;height:2.25rem;color:var(--text);cursor:pointer;border-radius:50%;flex:none;place-items:center;display:grid}.fdlg-close:hover{border-color:var(--violet);color:var(--violet)}.fdlg-art{border:1px solid var(--line);border-radius:var(--radius,10px);background:linear-gradient(var(--surface-2), var(--surface));place-items:center;width:100%;max-height:46dvh;display:grid;overflow:hidden;container-type:size}.fdlg-art pre{color:var(--violet)}.fdlg-controls{flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;display:flex}.fdlg-play{border:1px solid var(--line-strong);background:var(--surface);min-width:5.5rem;color:var(--text);font:inherit;cursor:pointer;border-radius:999px;padding:.45rem .9rem;font-size:.9rem}.fdlg-play:hover{border-color:var(--violet)}.fdlg-control{flex-wrap:wrap;flex:1;align-items:center;gap:.6rem;min-width:0;font-size:.9rem;display:flex}.fdlg-control label,.fdlg-control legend{color:var(--muted)}.fdlg-control fieldset{border:0;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0;padding:0;display:flex}.fdlg-control legend{float:left;margin-right:.6rem;padding:0;line-height:2rem}.fdlg-control input[type=range]{min-width:8rem;max-width:20rem;height:2rem;accent-color:var(--violet);cursor:pointer;flex:1}.fdlg-control output{min-width:4.5rem;color:var(--violet);font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.85rem}.fdlg-radio{position:relative}.fdlg-radio input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.fdlg-radio span{border:1px solid var(--line);border-radius:999px;padding:.3rem .8rem;font-size:.85rem;display:block}.fdlg-radio input:checked+span{border-color:var(--violet);background:var(--violet-tint);color:var(--violet)}.fdlg-note{color:var(--muted);margin:-.25rem 0 0;font-size:.8rem}.fdlg-facts{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.fdlg-facts li{padding-left:1.1rem;position:relative}.fdlg-facts li:before{content:"";background:var(--violet);border-radius:50%;width:6px;height:6px;position:absolute;top:.6em;left:0}.fdlg-docs{color:var(--violet);text-underline-offset:.2em;justify-self:start;font-weight:500;text-decoration:underline}@media (prefers-reduced-motion:reduce){.fcard-art pre{transition:none}}
