@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./fredoka-hebrew-wght-normal-DdnsCkLr.woff2)format("woff2-variations");unicode-range:U+307-308,U+590-5FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./fredoka-latin-ext-wght-normal-CYrqKuxd.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:Fredoka Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./fredoka-latin-wght-normal-DM6njrJ3.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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-ext-wght-normal-D4X5GqEv.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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-vietnamese-wght-normal-U01xdrZh.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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-ext-wght-normal-CXYtwYOx.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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-wght-normal-BzFMHfZw.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{--bg:#fff6ec;--surface:#fff;--text:#2b2346;--muted:#776f8f;--line:#efe6f7;--line-strong:#ddd2f0;--ink:#2b2346;--accent:#7b5cff;--accent-dark:#5a3de0;--accent-soft:#ece7ff;--outline:#2b2346;--label:#5d5a6a;--radius:24px;--shadow:0 4px 0 #2b234614, 0 10px 24px #2b234614;--pink:#ff6fa8;--sun:#ffc93c;--mint:#3fd6a3;--sky:#4cb8ff;--grape:#9b6bff;--peach:#ff9a5c;--font-display:"Fredoka Variable", ui-rounded, "SF Pro Rounded", system-ui, sans-serif;--font-body:"Nunito Variable", ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-tap-highlight-color:transparent}h1,h2,h3{font-family:var(--font-display);letter-spacing:.01em;font-weight:600}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.button{font-family:var(--font-display);background:var(--accent);color:#fff;box-shadow:0 4px 0 var(--accent-dark);border:0;border-radius:999px;padding:12px 22px;font-size:17px;font-weight:600;transition:transform .1s,box-shadow .1s}.button:active{box-shadow:0 1px 0 var(--accent-dark);transform:translateY(3px)}.button.secondary{background:var(--accent-soft);color:var(--accent-dark);box-shadow:0 4px #d3c8ff}.button.secondary:active{box-shadow:0 1px #d3c8ff}.button.outline{background:var(--surface);color:var(--text);box-shadow:inset 0 0 0 2px var(--line-strong)}.button.outline:active{box-shadow:inset 0 0 0 2px var(--accent);transform:none}.icon-button{background:var(--surface);border:0;border-radius:16px;place-items:center;width:48px;height:48px;font-size:22px;font-weight:700;line-height:1;transition:transform .1s,box-shadow .1s;display:grid;box-shadow:0 4px #e6dcf2,0 6px 16px #2b23461a}.icon-button:hover{transform:translateY(-1px)}.icon-button:active{transform:translateY(3px);box-shadow:0 1px #e6dcf2,0 2px 6px #2b23461a}.link-button{color:var(--muted);background:#f4eff9;border:0;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:700}.link-button:hover{color:#d23c78;background:#ffe3ee}.muted{color:var(--muted)}.gallery-page{min-height:100%;padding:36px 16px 56px;position:relative;overflow-x:hidden}.gallery-page>:not(.backdrop){max-width:1100px;margin-left:auto;margin-right:auto;position:relative}.backdrop{pointer-events:none;position:absolute;inset:0;overflow:hidden}.blob{filter:blur(4px);opacity:.35;border-radius:50%;animation:14s ease-in-out infinite alternate drift;position:absolute}.blob.b1{background:var(--pink);border-radius:58% 42% 63% 37%/45% 55%;width:280px;height:280px;top:-90px;left:-80px}.blob.b2{background:var(--sun);border-radius:40% 60% 45% 55%/60% 40%;width:220px;height:220px;animation-delay:-4s;top:40px;right:-70px}.blob.b3{background:var(--mint);width:180px;height:180px;animation-delay:-8s;top:520px;left:-90px}.blob.b4{background:var(--sky);border-radius:55% 45% 40% 60%/50% 60% 40% 50%;width:240px;height:240px;animation-delay:-2s;top:900px;right:-110px}@keyframes drift{to{transform:translate(24px,30px)rotate(25deg)scale(1.08)}}.top-bar{font-family:var(--font-display);align-items:center;gap:12px;margin-bottom:28px;font-size:22px;font-weight:600;display:flex}.logo{background:var(--surface);width:46px;height:46px;box-shadow:var(--shadow);border-radius:14px;place-items:center;font-size:26px;animation:3s ease-in-out infinite wiggle;display:grid}@keyframes wiggle{0%,to{transform:rotate(-8deg)}50%{transform:rotate(6deg)scale(1.05)}}.gallery-header{text-align:center;margin-bottom:32px}.rainbow-title{flex-wrap:wrap;justify-content:center;column-gap:.3em;margin:0 0 10px;font-size:clamp(38px,9vw,64px);font-weight:700;line-height:1.05;display:flex}.rainbow-word{white-space:nowrap}.rainbow-letter{text-shadow:0 3px #2b23461f;animation:.6s cubic-bezier(.3,1.6,.5,1) backwards hop;display:inline-block}.rainbow-letter:hover{animation:.5s cubic-bezier(.3,1.6,.5,1) hop}.rainbow-letter.c0{color:var(--pink)}.rainbow-letter.c1{color:var(--peach)}.rainbow-letter.c2{color:#f2b100}.rainbow-letter.c3{color:var(--mint)}.rainbow-letter.c4{color:var(--sky)}.rainbow-letter.c5{color:var(--grape)}@keyframes hop{0%{transform:translateY(0)}40%{transform:translateY(-.25em)rotate(-6deg)}to{transform:translateY(0)}}.gallery-header p{max-width:34em;color:var(--muted);margin:0 auto;font-size:17px}.filters{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 24px;margin-bottom:30px;display:flex}.chips{flex-wrap:wrap;gap:10px;display:flex}.chip{background:var(--surface);box-shadow:inset 0 0 0 2px var(--line-strong);font-family:var(--font-display);border:0;border-radius:999px;padding:9px 18px;font-size:16px;font-weight:600;transition:transform .1s}.chip:hover{transform:translateY(-1px)}.chip[aria-pressed=true]{background:var(--accent);color:#fff;box-shadow:0 3px 0 var(--accent-dark)}.level-filter{color:var(--muted);font-family:var(--font-display);align-items:center;gap:12px;font-size:16px;font-weight:600;display:flex}.level-filter select{appearance:none;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%232b2346' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 14px center / 12px 8px;box-shadow:inset 0 0 0 2px var(--line-strong);color:var(--text);font:inherit;cursor:pointer;border:0;border-radius:14px;padding:10px 38px 10px 18px}.empty{text-align:center;margin:40px 0}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:22px;margin:0;padding:0;list-style:none;display:grid}@media (width<=520px){.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.top-bar{gap:8px;font-size:18px}.logo{width:38px;height:38px;font-size:21px}.chips{scrollbar-width:none;flex-wrap:nowrap;margin:-4px -16px;padding:4px 16px 8px;overflow-x:auto}.chip{flex:none}.card-row{flex-wrap:wrap;row-gap:6px}.heart{width:32px;height:32px;top:6px;right:6px}.heart svg{width:18px;height:18px}}.card{--tint:var(--grape);background:var(--surface);border-radius:var(--radius);box-shadow:0 5px 0 color-mix(in srgb, var(--tint) 45%, white), 0 12px 26px #2b234614;flex-direction:column;padding:10px;transition:transform .2s cubic-bezier(.3,1.5,.5,1),box-shadow .2s;display:flex;position:relative}@media (hover:hover){.card:nth-child(odd):hover{transform:translateY(-5px)rotate(-1.5deg)}.card:nth-child(2n):hover{transform:translateY(-5px)rotate(1.5deg)}}.card.tint-pink{--tint:var(--pink)}.card.tint-sun{--tint:var(--sun)}.card.tint-mint{--tint:var(--mint)}.card.tint-sky{--tint:var(--sky)}.card.tint-grape{--tint:var(--grape)}.card.tint-peach{--tint:var(--peach)}.card-art{position:relative}.card-open{border:4px solid color-mix(in srgb, var(--tint) 30%, white);border-radius:calc(var(--radius) - 8px);background:color-mix(in srgb, var(--tint) 8%, white);width:100%;padding:6px;display:block}.heart{background:var(--surface);width:38px;height:38px;color:var(--pink);border:0;border-radius:50%;place-items:center;padding:0;transition:transform .15s cubic-bezier(.3,1.6,.5,1);display:grid;position:absolute;top:10px;right:10px;box-shadow:0 2px 8px #2b234629}.heart svg{width:22px;height:22px}.heart:hover{transform:scale(1.1)}.heart[aria-pressed=true] svg{animation:.35s cubic-bezier(.3,1.6,.5,1) pop-in}.thumb{aspect-ratio:1;background:#fff;border-radius:12px;width:100%;display:block}.thumb path{stroke:var(--outline);stroke-width:1px;vector-effect:non-scaling-stroke;stroke-linejoin:round}.card-sticker{background:var(--surface);pointer-events:none;border-radius:50%;place-items:center;width:44px;height:44px;font-size:26px;animation:.5s cubic-bezier(.3,1.6,.5,1) pop-in;display:grid;position:absolute;top:-8px;left:-8px;transform:rotate(-12deg);box-shadow:0 3px 8px #2b23462e}.card-info{padding:10px 6px 4px}.card-info h3{margin:0 0 8px;font-size:19px;line-height:1.2}.card-row{justify-content:space-between;align-items:center;gap:8px;min-height:26px;display:flex}.card-row+.card-row{margin-top:8px}.card-meta{color:var(--muted);font-size:14px;font-weight:600}.card.finished .card-row+.card-row{margin-top:8px}.tag{background:color-mix(in srgb, var(--tint) 25%, white);border-radius:999px;padding:4px 12px;font-size:14px;font-weight:700}.level{white-space:nowrap;font-size:14px;font-weight:700}.level:before{content:"";vertical-align:2px;background:currentColor;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.level.easy{color:#1f9d72}.level.medium{color:#c98a00}.level.hard{color:#d23c64}.card-meta{color:#1f9d72;font-weight:800}.card-progress{background:color-mix(in srgb, var(--tint) 18%, white);border-radius:999px;height:8px;margin-top:8px;overflow:hidden}.card-progress>div{background:var(--tint);border-radius:999px;height:100%}.site-footer{color:var(--muted);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 24px;margin-top:56px;font-size:15px;font-weight:600;display:flex}.site-footer a{color:var(--muted);text-underline-offset:3px;padding:6px 2px}.site-footer a:hover{color:var(--accent-dark)}.info-page{min-height:100%;padding:16px 16px 56px}.info-header,.info-card{max-width:720px;margin-left:auto;margin-right:auto}.info-header{align-items:center;gap:14px;margin-bottom:20px;display:flex}.info-header h1{margin:0;font-size:clamp(28px,6vw,38px)}.info-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px 30px 30px;font-size:17px;line-height:1.6}.info-card h2{margin:28px 0 6px;font-size:22px}.info-card p{margin:0 0 12px}.info-card a{color:var(--accent-dark);overflow-wrap:anywhere;font-weight:700}.info-card .updated{color:var(--muted);font-size:15px}@media (width<=520px){.info-card{padding:20px 20px 24px}}.board-page{background:radial-gradient(circle at 15% 10%, #ffe9f2 0, transparent 40%), radial-gradient(circle at 90% 85%, #e5f6ff 0, transparent 45%), var(--bg);flex-direction:column;height:100%;display:flex}.board-loading{text-align:center;justify-content:center;align-items:center;gap:16px;padding:16px}.board-loading-actions{gap:12px;display:flex}.board-header{background:var(--surface);box-shadow:var(--shadow);border-radius:22px;align-items:center;gap:12px;margin:10px 12px 0;padding:8px 14px 8px 8px;display:flex}.board-title{flex:1;min-width:0}.board-title h1{white-space:nowrap;text-overflow:ellipsis;margin:0 0 6px;font-size:20px;overflow:hidden}.progress{background:var(--accent-soft);border-radius:999px;height:12px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--pink), var(--sun), var(--mint), var(--sky), var(--grape));background-size:300px 100%;border-radius:999px;height:100%;transition:width .4s cubic-bezier(.3,1.4,.5,1)}.progress-text{font-family:var(--font-display);color:var(--accent);text-align:right;min-width:3ch;font-size:20px;font-weight:700}.stage{flex:1;min-height:0;position:relative;overflow:hidden}.canvas{touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;width:100%;height:100%;display:block}.view.animating{transition:transform .3s}.paper{fill:#fff;filter:drop-shadow(0 4px 14px #2b234624)}.region{stroke:var(--outline);stroke-width:2px;vector-effect:non-scaling-stroke;stroke-linejoin:round}.region.filled{animation:.35s pop}.region.wrong{fill:#ffb3b3;animation:.35s shake}.region.pulse{stroke:var(--accent);stroke-width:4px;animation:.8s 2 pulse}@keyframes pop{0%{opacity:.3}}@keyframes shake{25%{fill:#ff7b7b}75%{fill:#ffb3b3}}@keyframes pulse{50%{stroke-width:1px}}.label{fill:var(--label);text-anchor:middle;dominant-baseline:central;pointer-events:none;font-family:var(--font-display);font-weight:500}.label.active{fill:var(--text);font-weight:700}.zoom-controls{flex-direction:column;gap:10px;display:flex;position:absolute;top:14px;right:14px}.palette{margin:0 12px calc(10px + env(safe-area-inset-bottom));background:var(--surface);box-shadow:var(--shadow);scrollbar-width:thin;border-radius:26px;gap:12px;padding:14px 16px 12px;display:flex;overflow-x:auto}.swatch{width:58px;height:58px;font-family:var(--font-display);border:4px solid #fff;border-radius:50%;flex:none;place-items:center;margin-top:6px;font-size:22px;font-weight:700;transition:transform .2s cubic-bezier(.3,1.6,.5,1);display:grid;position:relative;box-shadow:0 0 0 2px #2b23461a,inset 0 -6px #0000001f,inset 0 5px #ffffff4d}.swatch:not(.finished):hover{transform:translateY(-3px)}.swatch.selected{box-shadow:0 0 0 3px var(--accent), 0 6px 12px #2b234633, inset 0 -6px 0 #0000001f, inset 0 5px 0 #ffffff4d;animation:.4s cubic-bezier(.3,1.6,.5,1) bounce;transform:translateY(-4px)scale(1.12)}.swatch.selected:hover{transform:translateY(-4px)scale(1.12)}.swatch.finished{opacity:.4;cursor:default;transform:scale(.88)}.swatch-count{background:var(--ink);color:#fff;min-width:22px;height:22px;font-family:var(--font-body);border:2px solid #fff;border-radius:999px;padding:0 6px;font-size:11px;font-weight:800;line-height:18px;position:absolute;top:-8px;right:-8px}@keyframes bounce{0%{transform:scale(.9)}60%{transform:translateY(-6px)scale(1.18)}to{transform:translateY(-4px)scale(1.12)}}.done-bar{margin:0 12px calc(10px + env(safe-area-inset-bottom));background:var(--surface);box-shadow:var(--shadow);border-radius:26px;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:14px 16px;display:flex}.done-text{font-family:var(--font-display);font-size:19px;font-weight:600}.celebration{z-index:10;background:#2b234666;place-items:center;padding:16px;display:grid;position:fixed;inset:0;overflow:hidden}.confetti{border-radius:2px;width:10px;height:16px;animation:linear forwards fall;position:absolute;top:-20px}.confetti.dot{border-radius:50%;width:12px;height:12px}.confetti.square{width:12px;height:12px}@keyframes fall{to{transform:translateY(110vh)rotate(720deg)}}.celebration-card{background:var(--surface);text-align:center;border-radius:32px;padding:30px 30px 26px;animation:.5s cubic-bezier(.3,1.6,.5,1) pop-in;position:relative;box-shadow:0 8px #e6dcf2,0 24px 60px #2b23464d}.celebration-emoji{font-size:64px;line-height:1;animation:1.6s ease-in-out infinite wiggle}.celebration-stars{justify-content:center;gap:6px;margin-top:8px;font-size:28px;display:flex}.celebration-stars span{animation:.5s cubic-bezier(.3,1.8,.5,1) backwards pop-in}.celebration-stars span:first-child{animation-delay:.3s}.celebration-stars span:nth-child(2){animation-delay:.45s;transform:translateY(-6px)}.celebration-stars span:nth-child(3){animation-delay:.6s}.celebration-card h2{color:var(--accent);margin:8px 0 4px;font-size:34px}.celebration-card p{color:var(--muted);margin:0 0 20px;font-size:17px}.celebration-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}@keyframes pop-in{0%{opacity:0;transform:scale(.4)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
