[data-tip]{cursor:help}.vg-tip{z-index:50;color:#f9fafb;pointer-events:none;background:#111827;border-radius:.6rem;flex-direction:column;gap:.15rem;max-width:min(17rem,100vw - 1rem);padding:.6rem .8rem;font-size:.8rem;line-height:1.35;animation:.12s ease-out vg-tip-in;display:flex;position:fixed;box-shadow:0 8px 24px #00000047}.vg-tip[hidden]{display:none}.vg-tip strong{font-size:.85rem}.vg-tip__body{color:#d1d5db}.vg-tip:after{content:"";left:var(--arrow-x,50%);background:#111827;width:10px;height:10px;position:absolute;bottom:-5px;transform:translate(-50%)rotate(45deg)}.vg-tip--below:after{top:-5px;bottom:auto}@keyframes vg-tip-in{0%{opacity:0;transform:translateY(3px)}}@media (prefers-reduced-motion:reduce){.vg-tip{animation:none}}.vc{max-width:40rem;margin:0 auto;padding:1.5rem 1rem 2rem}.vc__tagline{color:#374151;margin:0 0 .35rem;font-size:.95rem;font-weight:600}.vc__meta{letter-spacing:.04em;text-transform:uppercase;color:#2f8f46;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;margin:0 0 .75rem;font-size:.75rem;font-weight:700;display:flex}.vc__meta [hidden],.vc [hidden]{display:none}.vc__connections{flex-wrap:wrap;justify-content:center;gap:.35rem;margin:0 0 .6rem;padding:0;list-style:none;display:flex}.vc__connection{background:var(--type-colour);color:#1f2937;-webkit-tap-highlight-color:transparent;border-radius:.2rem;align-items:center;gap:.25rem;padding:.25rem .6rem .25rem .45rem;font-size:.75rem;font-weight:700;line-height:1.3;transition:opacity .2s;display:inline-flex}.vc__connection-icon{flex:none;width:.95em;height:.95em}.vc__connection-count{font-weight:800}.vc__connection--found{opacity:.45}.vc__connection--found s{text-decoration-thickness:2px}.vc__dev{text-align:center;margin-top:2rem}.vc__dev-btn{color:#9ca3af;cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:.7rem}.vc__dev-btn:hover{color:#6b7280;text-decoration:underline}.vc__groups,.vc__grid{gap:.5rem;display:grid}.vc__groups:not(:empty){margin-bottom:.5rem}.vc__grid{grid-template-columns:repeat(4,minmax(0,1fr))}.vc__tile{color:#14532d;min-height:5.5rem;font:inherit;text-align:center;overflow-wrap:anywhere;hyphens:auto;cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:.7rem;justify-content:center;align-items:center;padding:.4rem;font-size:.82rem;font-weight:700;line-height:1.2;transition:background .12s,color .12s,border-color .12s,transform .12s;display:flex}.vc__tile:hover:not(:disabled){border-color:#86efac}.vc__tile:active:not(:disabled){transform:scale(.96)}.vc__tile:focus-visible{outline-offset:2px;outline:2px solid #2f8f46}.vc__tile[aria-pressed=true]{color:#fff;background:#14532d;border-color:#14532d}.vc__tile:disabled{cursor:default}.vc__tile--hop{animation:.35s both vc-hop}.vc__tile--shake{animation:.4s both vc-shake}@keyframes vc-hop{50%{transform:translateY(-.4rem)}}@keyframes vc-shake{20%,60%{transform:translate(-.3rem)}40%,80%{transform:translate(.3rem)}}.vc__group{color:#1f2937;text-align:center;border-radius:.7rem;padding:.75rem 1rem;animation:.3s ease-out vc-pop}.vc__group--1{background:#fde68a}.vc__group--2{background:#86efac}.vc__group--3{background:#93c5fd}.vc__group--4{background:#c4b5fd}.vc:not(.vc--playing) .vc__group{flex-direction:column;justify-content:center;min-height:8.5rem;display:flex}.vc__group-explanation{color:#374151;margin:0 0 .35rem;font-size:.8rem;font-style:italic;line-height:1.35}.vc--playing .vc__group-explanation{display:none}.vc__share-top{justify-content:center;margin-top:.9rem;display:flex}.vc__group-label{text-transform:uppercase;letter-spacing:.03em;margin:0 0 .2rem;font-size:.9rem;font-weight:800}.vc__group-items{flex-wrap:wrap;justify-content:center;gap:0 .35rem;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.vc__group-items li:not(:last-child):after{content:","}.vc:not(.vc--playing) .vc__group-items{gap:.4rem;margin-top:.3rem}.vc:not(.vc--playing) .vc__group-items li:after{content:none}.vc__group-items a{color:#111827;background:#ffffffbf;border:2px solid #1f2937;border-radius:999px;padding:.3rem .7rem;font-weight:700;text-decoration:none;transition:transform .12s,box-shadow .12s,background .12s;display:inline-block;box-shadow:2px 2px #1f2937}.vc__group-items a:hover,.vc__group-items a:focus-visible{background:#fff;transform:translate(-1px,-1px);box-shadow:3px 3px #1f2937}.vc__group-items a:active{transform:translate(1px,1px);box-shadow:1px 1px #1f2937}@keyframes vc-pop{0%{opacity:0;transform:scale(.96)}}.vc__toast{text-align:center;color:#14532d;opacity:0;min-height:1.5rem;margin:.6rem 0 0;font-size:.85rem;font-weight:700;transition:opacity .2s}.vc__toast--show{opacity:1}.vc__mistakes{color:#374151;justify-content:center;align-items:center;gap:.6rem;margin:.25rem 0 .9rem;font-size:.85rem;display:flex}.vc__dots{gap:.35rem;display:inline-flex}.vc__dot{background:#2f8f46;border-radius:999px;width:.75rem;height:.75rem;transition:transform .2s,background .2s}.vc__dot--used{background:#e5e7eb;transform:scale(.75)}.vc__controls,.vc__end-actions{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.vc__btn{color:#14532d;font:inherit;cursor:pointer;background:#fff;border:1px solid #14532d;border-radius:999px;justify-content:center;align-items:center;padding:.65rem 1.1rem;font-size:.9rem;font-weight:700;text-decoration:none;transition:background .15s,opacity .15s;display:inline-flex}.vc__btn:hover:not(:disabled){background:#f0fdf4}.vc__btn--primary{color:#fff;background:#14532d}.vc__btn--primary:hover:not(:disabled){background:#0f3d22}.vc__btn:disabled{opacity:.4;cursor:default}.vc__btn:focus-visible{outline-offset:2px;outline:2px solid #2f8f46}.vc__end{text-align:center;background:#fff;border:1px solid #e5e7eb;border-radius:1rem;margin-top:1rem;padding:1.25rem;box-shadow:0 4px 16px #14532d0f}.vc__end-title{color:#14532d;margin:0;font-size:1.5rem;font-weight:800}.vc__end-sub{color:#4b5563;margin:.25rem 0 .9rem}.vc__end-grid{gap:.25rem;margin-bottom:1rem;display:inline-grid}.vc__end-row{gap:.25rem;display:flex}.vc__sq{border-radius:.3rem;width:1.5rem;height:1.5rem}.vc__sq--1{background:#fde68a}.vc__sq--2{background:#86efac}.vc__sq--3{background:#93c5fd}.vc__sq--4{background:#c4b5fd}.vc__end-note{color:#6b7280;margin:.9rem 0 0;font-size:.8rem}.vc__disclaimer{color:#6b7280;text-align:center;margin-top:2rem;font-size:.8rem}.vc__disclaimer a{color:#14532d;font-weight:700}@media (width<=640px){.vc{padding:1rem .6rem 1.5rem}.vc__grid,.vc__groups{gap:.35rem}.vc__tile{border-radius:.55rem;min-height:5rem;padding:.3rem .2rem;font-size:.68rem}.vc__group{padding:.6rem}.vc__group-label{font-size:.8rem}.vc__group-items{font-size:.75rem}.vc__btn{padding:.6rem .9rem;font-size:.85rem}}@media (height>=520px){main:has(.vc--playing){overflow:hidden}.page-shell:has(.vc--playing){height:100%}.page-body:has(.vc--playing){flex-direction:column;min-height:0;display:flex}.vc--playing{flex-direction:column;flex:1 1 0;width:100%;min-height:0;padding-top:1rem;padding-bottom:.75rem;display:flex}.vc--playing>*{flex:none}.vc--playing .vc__board:not([hidden]){flex:1 1 0;grid-template-rows:repeat(4,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;min-height:0;max-height:34rem;display:grid}.vc--playing .vc__groups,.vc--playing .vc__grid{display:contents}.vc--playing .vc__group{flex-direction:column;grid-column:1/-1;justify-content:center;min-height:0;display:flex;overflow:hidden}.vc--playing .vc__tile{min-height:0;overflow:hidden}.vc--playing .vc__toast{margin-top:.4rem}.vc--playing .vc__mistakes{margin-bottom:.6rem}.vc--playing .vc__disclaimer{display:none}.page-shell:has(.vc--playing)>.site-footer{padding:.4rem 1rem calc(.4rem + env(safe-area-inset-bottom,0px));flex-flow:wrap;flex:none;justify-content:center;gap:.25rem 1rem;margin-top:0}.page-shell:has(.vc--playing) .site-footer__logo{width:1.4rem}.page-shell:has(.vc--playing) .site-footer__title{width:4.5rem}.page-shell:has(.vc--playing) .site-footer__links{font-size:.75rem}.page-shell:has(.vc--playing) .site-footer__support{margin-top:0;font-size:.75rem}}@media (height>=520px) and (width<=640px){.vc--playing{padding-top:.6rem;padding-bottom:.5rem}.vc--playing .vc__board:not([hidden]){gap:.35rem}}@media (prefers-reduced-motion:reduce){.vc__tile,.vc__group,.vc__dot{transition:none;animation:none}}
