:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#221f18;--ink:#e7e5e4;--ink-2:#d6d3d1;--ink-3:#a8a29e;--ink-4:#57534e;--line:#ffffff1a;--line-hover:#fff3;--line-on:#ffffff61;--wash:#ffffff0a;--good:#a3be8c;--good-wash:#a3be8c1a;--bad:#e08a7a;--bad-wash:#e08a7a1a;--f-head:"Crimson Pro", serif;--f-body:"Lora", serif;--f-mono:"JetBrains Mono", ui-monospace, Menlo, monospace}*,:before,:after{box-sizing:border-box;margin:0;padding:0}h1,h2,h3{font-weight:inherit;font-size:inherit}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}code,kbd,input{font-family:var(--f-mono);font-variant-ligatures:none}ul,ol{list-style:none}body{font-family:var(--f-body);color:#e5e7eb;-webkit-font-smoothing:antialiased;scrollbar-width:none;min-height:100dvh}::-webkit-scrollbar{display:none}.background-image{background-color:var(--bg);background-image:linear-gradient(#ffffff05 1px,#0000 1px),linear-gradient(90deg,#ffffff05 1px,#0000 1px);background-size:20px 20px;background-attachment:fixed}:focus-visible{outline-offset:2px;outline:2px solid #e5e7eb}::selection{background:#ffffff26}.shell{flex-direction:column;justify-content:center;max-width:760px;min-height:100dvh;margin:0 auto;padding:64px 24px;display:flex}.hero-title{font-family:var(--f-head);color:var(--ink);margin-bottom:1.25rem;font-size:3.5rem;line-height:1.05}.hero-description{font-family:var(--f-head);color:var(--ink-2);max-width:36rem;font-size:1.375rem;line-height:1.9rem}.section-title{font-family:var(--f-head);color:var(--ink);margin-bottom:.5rem;font-size:1.5rem;line-height:2rem}.muted{color:var(--ink-3);font-size:.9375rem}.dot{color:var(--ink-4)}code{color:var(--ink-2);font-size:.9em}kbd{color:var(--ink-3);border:1px solid var(--line);border-radius:.375rem;margin:0 2px;padding:1px 6px;font-size:.75rem}.link{color:var(--ink-3);font-size:.9375rem;transition:color .2s}.link:hover{color:var(--ink)}@media (width<=640px){.shell{justify-content:flex-start;padding:40px 16px}.hero-title{font-size:2.625rem}.hero-description{font-size:1.2rem;line-height:1.7rem}}.card{border:1px solid var(--line);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);border-radius:.75rem;transition:border-color .2s,transform .2s,background-color .2s}button.card:hover{border-color:var(--line-hover);transform:scale(1.02)}button.card:active{transform:scale(1)}.card.is-on{border-color:var(--line-on);background:var(--wash)}.setup,.results{flex-direction:column;gap:2.5rem;display:flex}.cards{flex-direction:column;gap:.5rem;display:flex}.choice{text-align:left;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.choice-text{flex-direction:column;gap:.1rem;min-width:0;display:flex}.choice-name{color:var(--ink);font-weight:500}.choice-blurb{color:var(--ink-3);font-size:.9375rem}.choice-example{color:var(--ink-3);white-space:nowrap}@media (width<=520px){.choice-example{display:none}}.pills{flex-wrap:wrap;gap:.5rem;display:flex}.pill{border:1px solid var(--line);color:var(--ink-3);border-radius:999px;padding:.45rem .9rem;font-size:.9375rem;transition:color .2s,border-color .2s,background-color .2s}.pill:hover{color:var(--ink);border-color:var(--line-hover)}.pill.is-on{color:var(--ink);border-color:var(--line-on);background:var(--wash)}.start-row{flex-wrap:wrap;align-items:center;gap:1rem 1.25rem;display:flex}.start{color:var(--ink);padding:.7rem 1.4rem;font-size:1.05rem;font-weight:500}.game{flex-direction:column;gap:1.25rem;display:flex}.hud{font-family:var(--f-head);color:var(--ink-2);justify-content:space-between;align-items:baseline;gap:1rem;font-size:1.375rem;display:flex}.hud .num{font-variant-numeric:tabular-nums;color:var(--ink)}.hud .num.warn{color:var(--bad)}.hud-mid{font-family:var(--f-body);color:var(--ink-4);font-size:.875rem}.board{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.column{min-width:0;padding:.9rem 1rem 1rem}.column-head{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.column-head .section-title{margin-bottom:.4rem;font-size:1.25rem}.column ul{flex-direction:column;gap:.15rem;display:flex}.sample{border-radius:.375rem;align-items:baseline;gap:.6rem;margin:0 -.5rem;padding:.3rem .5rem;transition:background-color .15s,color .15s;display:flex}.sample code{color:var(--ink);overflow-wrap:anywhere;font-size:1rem}.sample .mark{text-align:center;width:.8rem;color:var(--ink-4);flex:none;font-size:.85rem}.sample.is-good{background:var(--good-wash)}.sample.is-good .mark{color:var(--good)}.sample.is-bad{background:var(--bad-wash)}.sample.is-bad .mark,.sample.is-bad code{color:var(--bad)}.regex{border:1px solid var(--line-hover);background:#00000026;border-radius:.75rem;align-items:center;gap:.25rem;padding:.9rem 1.1rem;transition:border-color .2s;display:flex}.regex:focus-within{border-color:var(--line-on)}.regex.is-invalid,.regex.is-invalid:focus-within{border-color:var(--bad)}.regex .slash{font-family:var(--f-mono);color:var(--ink-4);font-size:1.4rem}.regex input{min-width:0;color:var(--ink);caret-color:var(--ink);background:0 0;border:0;outline:none;flex:1;font-size:1.4rem}.regex input::placeholder{color:var(--ink-4)}.below{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;min-height:1.5rem;display:flex}.bad-text{color:var(--bad)}.keys{white-space:nowrap}@media (width<=640px){.board{grid-template-columns:1fr}.hud,.regex input,.regex .slash{font-size:1.15rem}}.results .intro .muted{margin-bottom:.5rem}.new-best{color:var(--good);vertical-align:middle;margin-left:.5rem;font-size:1.25rem}.rounds{flex-direction:column;gap:.5rem;display:flex}.round{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.65rem .9rem;display:flex}.round-main{align-items:baseline;gap:.75rem;min-width:0;display:flex}.round-label{width:3.6rem;color:var(--ink-3);flex:none;font-size:.875rem}.round.is-solved .round-label{color:var(--good)}.round-yours{color:var(--ink);overflow-wrap:anywhere}.round-meta{color:var(--ink-3);align-items:baseline;gap:1rem;font-size:.875rem;display:flex}.round-meta code{color:var(--ink-3)}.fade{animation:.5s ease-out backwards fade-up;animation-delay:var(--d,0s)}@keyframes fade-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.fade{animation:none}.card,button.card:hover{transition:none;transform:none}}
