@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/Touch-Grass-Bingo/assets/fraunces-vietnamese-wght-normal-CnvboYUG.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/Touch-Grass-Bingo/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/Touch-Grass-Bingo/assets/fraunces-latin-wght-normal-ukD16Tqj.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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/Touch-Grass-Bingo/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/Touch-Grass-Bingo/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/Touch-Grass-Bingo/assets/space-grotesk-latin-wght-normal-BhU9QXUp.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:Caveat;font-style:normal;font-display:swap;font-weight:700;src:url(/Touch-Grass-Bingo/assets/caveat-cyrillic-ext-700-normal-CrK2-ngJ.woff2)format("woff2"),url(/Touch-Grass-Bingo/assets/caveat-cyrillic-ext-700-normal-DjFGiEhD.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:700;src:url(/Touch-Grass-Bingo/assets/caveat-cyrillic-700-normal-BIyejhEL.woff2)format("woff2"),url(/Touch-Grass-Bingo/assets/caveat-cyrillic-700-normal-Bhcx9qBB.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:700;src:url(/Touch-Grass-Bingo/assets/caveat-latin-ext-700-normal-DFbRgDry.woff2)format("woff2"),url(/Touch-Grass-Bingo/assets/caveat-latin-ext-700-normal-DjJQd59I.woff)format("woff");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:Caveat;font-style:normal;font-display:swap;font-weight:700;src:url(/Touch-Grass-Bingo/assets/caveat-latin-700-normal-D8_1Nw6V.woff2)format("woff2"),url(/Touch-Grass-Bingo/assets/caveat-latin-700-normal-cPyBTTZN.woff)format("woff");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:#f6f1e3;--paper-deep:#efe8d4;--ink:#1f3d2b;--ink-soft:#4a5a4e;--moss:#2f6b45;--moss-bright:#3f8a58;--highlight:#e7efc9;--gold:#c8a02c;--line:#c9c2ac;--card:#fffdf6;--shadow:0 2px 0 #1f3d2b2e;--serif:"Fraunces", Georgia, serif;--sans:"Space Grotesk", system-ui, sans-serif;--hand:"Caveat", cursive}*{box-sizing:border-box}body{background:radial-gradient(circle at 15% 8%, #3f8a5812, transparent 34%), repeating-linear-gradient(transparent 0 31px, #1f3d2b0d 31px 32px), var(--paper);color:var(--ink);font-family:var(--sans);min-height:100vh;margin:0;line-height:1.5}main,.site-header,.site-footer{max-width:760px;margin-inline:auto;padding-inline:20px}.site-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-top:28px;padding-bottom:8px;display:flex}.brand{align-items:center;gap:14px;display:flex}.brand-mark{box-shadow:var(--shadow);border-radius:12px}h1{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:clamp(1.5rem,4vw,2.1rem);font-weight:650}.tagline{color:var(--ink-soft);margin:2px 0 0;font-size:.88rem}.model-chip{background:var(--card);border:1.5px solid var(--line);color:var(--ink-soft);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:7px 14px;font-size:.78rem;font-weight:500;display:inline-flex}.model-dot{background:var(--line);border-radius:50%;width:9px;height:9px}.model-dot[data-state=idle]{background:var(--gold)}.model-dot[data-state=loading]{background:var(--gold);animation:1s infinite alternate pulse}.model-dot[data-state=ready]{background:var(--moss-bright)}.model-dot[data-state=offline]{background:#b3aea0}.model-dot[data-state=error]{background:#b5442e}@keyframes pulse{0%{opacity:.35}to{opacity:1}}.setup,.card-area,.empty-state{background:var(--card);border:1.5px solid var(--line);box-shadow:var(--shadow);border-radius:18px;margin-top:22px;padding:24px}.section-title{font-family:var(--serif);margin:0 0 16px;font-size:1.25rem;font-weight:600}.setup-grid{gap:18px;display:grid}fieldset.chip-set{border:0;margin:0;padding:0}legend,.focus-label span{text-transform:uppercase;letter-spacing:.09em;color:var(--ink-soft);margin-bottom:8px;padding:0;font-size:.75rem;font-weight:600}.focus-label{display:block}.focus-label span em{text-transform:none;letter-spacing:0;opacity:.7;font-style:normal}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{font-family:var(--sans);border:1.5px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:999px;padding:8px 14px;font-size:.88rem;font-weight:500;transition:transform 80ms,background .12s}.chip:hover{transform:translateY(-1px)}.chip-on{background:var(--ink);border-color:var(--ink);color:var(--paper)}#focus-input{width:100%;font-family:var(--sans);border:1.5px solid var(--line);background:var(--paper);color:var(--ink);border-radius:12px;margin-top:8px;padding:11px 14px;font-size:.95rem}#focus-input:focus{outline:2px solid var(--moss-bright);outline-offset:1px}.actions{flex-wrap:wrap;gap:10px;margin-top:20px;display:flex}.btn{font-family:var(--sans);cursor:pointer;border:1.5px solid #0000;border-radius:12px;padding:12px 20px;font-size:.95rem;font-weight:600;transition:transform 80ms,box-shadow 80ms}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:wait}.btn-primary{background:var(--moss);color:#fdfbf3;box-shadow:0 3px #234f35}.btn-primary:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #234f35}.btn-secondary{background:var(--gold);color:#33290a;box-shadow:0 3px #9a7a1f}.btn-ghost{border-color:var(--line);color:var(--ink-soft);background:0 0}.btn-small{padding:7px 13px;font-size:.8rem}.hint{color:var(--ink-soft);margin:14px 0 0;font-size:.8rem}.engine-status{background:var(--card);border:1.5px dashed var(--gold);border-radius:14px;margin-top:16px;padding:14px 18px}.engine-status-row{color:var(--ink-soft);justify-content:space-between;gap:12px;margin-bottom:9px;font-size:.84rem;display:flex}.progress{background:var(--paper-deep);border-radius:999px;height:8px;overflow:hidden}.progress-bar{background:linear-gradient(90deg, var(--moss-bright), var(--gold));border-radius:999px;width:4%;height:100%;transition:width .3s}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px;display:flex}.card-head h2{font-family:var(--serif);text-transform:capitalize;margin:0;font-size:1.35rem;font-weight:620}.card-meta{color:var(--ink-soft);margin:3px 0 0;font-size:.8rem}.card-tools{gap:8px;display:flex}.bingo-grid{grid-template-columns:repeat(5,1fr);gap:7px;display:grid}.cell{font-family:var(--sans);aspect-ratio:1;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;text-align:center;overflow-wrap:anywhere;border-radius:10px;justify-content:center;align-items:center;padding:6px;font-size:clamp(.52rem,1.6vw,.72rem);font-weight:500;line-height:1.25;transition:background .12s,transform 60ms;display:flex;overflow:hidden}.cell:hover{border-color:var(--moss-bright);transform:scale(1.03)}.cell-checked{background:var(--highlight);border-color:#b9c99a;-webkit-text-decoration:line-through #3c5a2e80;text-decoration:line-through #3c5a2e80;text-decoration-thickness:1.5px}.cell-checked:after{content:"✓";color:var(--moss);margin-left:4px;font-weight:700;text-decoration:none;display:inline-block}.cell-free{background:var(--ink);color:var(--paper);border-color:var(--ink);font-family:var(--hand);cursor:default;font-size:clamp(.7rem,2vw,.95rem);text-decoration:none}.cell-bingo{border-color:var(--gold);box-shadow:0 0 0 2px #c8a02c73}.bingo-banner{font-family:var(--hand);color:var(--moss);text-align:center;margin:16px 0 0;font-size:1.35rem;animation:.3s pop}@keyframes pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.recap-row{flex-wrap:wrap;align-items:center;gap:14px;margin-top:20px;display:flex}.recap-row .hint{margin:0}.recap-box{background:var(--paper-deep);border-left:4px solid var(--moss-bright);border-radius:0 12px 12px 0;margin-top:14px;padding:16px 18px}.recap-box h3{font-family:var(--serif);margin:0 0 6px;font-size:1rem}#recap-text{color:var(--ink);margin:0;font-size:.95rem}.empty-state{text-align:center;color:var(--ink-soft);box-shadow:none;background:0 0;border-style:dashed}.empty-art{margin-bottom:6px;font-size:2.4rem}.empty-state p{margin:0;max-width:52ch;margin-inline:auto;font-size:.92rem}.site-footer{color:var(--ink-soft);padding-top:30px;padding-bottom:44px;font-size:.78rem}.site-footer a{color:var(--moss)}[hidden]{display:none!important}@media (max-width:560px){.bingo-grid{gap:5px}.cell{border-radius:7px;padding:3px;font-size:clamp(.46rem,2.4vw,.62rem)}.site-header{align-items:flex-start}}
