@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/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(/assets/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(/assets/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(/assets/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(/assets/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{--page:#f7f4ef;--board:#e9e2d7;--panel:#fffdfa;--line:#e0d8cb;--ink:#22262e;--muted:#6f7683;--accent:#2f62c8;--accent-ink:#fff;--font:"Nunito Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--page);color:var(--ink);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased;margin:0}h1{letter-spacing:.2px;margin:0;font-size:15px;font-weight:650}.sub{color:var(--muted);margin:6px 0 0;font-size:12.5px}.hint{color:var(--muted);border-top:1px solid var(--line);margin-top:18px;padding-top:12px;font-size:12px}label{text-transform:uppercase;letter-spacing:.7px;color:var(--muted);margin:16px 0 6px;font-size:11px;display:block}select,input[type=number],input[type=text],input[type=file]{width:100%;color:var(--ink);border:1px solid var(--line);font:inherit;background:#fff;border-radius:7px;padding:7px 9px;font-size:13px}select:focus-visible,input:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button{background:var(--accent);width:100%;color:var(--accent-ink);font:inherit;cursor:pointer;border:0;border-radius:7px;margin-top:16px;padding:9px;font-weight:600}button.ghost{color:var(--ink);border:1px solid var(--line);background:#fff;font-weight:500}button:disabled{opacity:.4;cursor:not-allowed}.dev{align-items:stretch;height:100%;display:flex}.panel{border-right:1px solid var(--line);background:var(--panel);flex:none;width:252px;padding:18px 20px;overflow-y:auto}.stagewrap{flex-direction:column;flex:1;min-width:0;height:100%;display:flex;overflow:hidden}.playfield{flex:1;min-width:0;min-height:0;display:flex}.stagearea{flex:1;min-width:0;min-height:0;display:flex;position:relative}.stage{flex:1;min-width:0;min-height:0;position:relative}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:14px;padding:10px 18px;display:flex}.progress{flex:auto;align-items:center;gap:12px;min-width:0;display:flex;overflow:hidden}@media (width<=900px){.progress-count{display:none}}.progress-track{background:var(--board);border-radius:999px;flex:1;min-width:0;height:8px;overflow:hidden;box-shadow:inset 0 1px 2px #3c2d191f}.progress-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .22s ease-out}.progress-fill.is-complete{background:#2f7d4f}.progress-label{font-variant-numeric:tabular-nums;color:var(--muted);flex:none;align-items:baseline;gap:8px;font-size:12.5px;display:flex}.progress-label b{color:var(--ink);font-size:14px;font-weight:650}.stat{font-variant-numeric:tabular-nums;color:var(--muted);border-top:1px solid var(--line);margin-top:18px;padding-top:12px;font-size:12.5px}.stat b{color:var(--ink);font-weight:600}.done{color:var(--accent);margin-top:10px;font-weight:650}.centred{place-items:center;height:100%;padding:24px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;width:100%;max-width:380px;padding:24px;box-shadow:0 1px 2px #3c2d190f}.stack>*+*{margin-top:14px}.cardhead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.auth{flex:none;align-items:center;display:flex}.authlink{font-size:13px}.hint.compact{border-top:0;margin-top:6px;padding-top:0}.error{color:#c2483f;margin:0;font-size:12.5px}.rule{color:var(--muted);align-items:center;gap:10px;font-size:12px;display:flex}.rule:before,.rule:after{content:"";background:var(--line);flex:1;height:1px}.joinrow{gap:8px;display:flex}.codeinput{text-transform:uppercase;letter-spacing:2px;font-variant-numeric:tabular-nums;font-weight:600}button.inline{flex:none;width:auto;margin-top:0;padding:7px 14px}button.link{width:auto;color:var(--muted);background:0 0;margin:0;padding:4px 6px;font-weight:500}button.link:hover{color:var(--ink)}.page{max-width:760px;margin:0 auto;padding:20px 20px 64px}.pagehead{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding-bottom:14px;display:flex}.section{margin-top:28px}.section h2{letter-spacing:.2px;margin:0 0 12px;font-size:13px;font-weight:650}.tabs{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.tab,.chip{border:1px solid var(--line);width:auto;color:var(--muted);cursor:pointer;background:#fff;border-radius:999px;margin:0;padding:6px 12px;font-size:13px;font-weight:500}.tab.is-on,.chip.is-on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.chips{flex-wrap:wrap;gap:8px;display:flex}.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:0 0 8px;padding:0;list-style:none;display:grid}.thumb-wrap{position:relative}.thumb-save{color:#fff;cursor:pointer;opacity:0;background:#22262eb8;border:0;border-radius:999px;width:auto;margin:0;padding:4px 9px;font-size:11px;font-weight:600;transition:opacity .12s;position:absolute;top:6px;right:6px}.thumb-wrap:hover .thumb-save,.thumb-save:focus-visible,.thumb-save:disabled{opacity:1}.thumb-save:disabled{cursor:default;background:#2f7d4f}.thumb{background:var(--board);cursor:pointer;text-align:left;border:2px solid #0000;border-radius:10px;width:100%;margin:0;padding:0;display:block;overflow:hidden}.thumb img{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.thumb.is-on{border-color:var(--accent)}.thumbcap{color:var(--muted);background:var(--panel);white-space:nowrap;text-overflow:ellipsis;padding:6px 8px;font-size:11.5px;line-height:1.35;display:block;overflow:hidden}.thumb.is-on .thumbcap{color:var(--ink)}.chosen{margin:0 0 4px;font-size:13px}.credit{color:var(--muted)}.roomcode{font-variant-numeric:tabular-nums;letter-spacing:2px;flex:none;font-size:14px;font-weight:650}.signin-save{white-space:nowrap;flex:none;padding:7px 12px;font-size:12.5px}.topbar-actions,.topbar-actions-items{display:contents}.more-toggle,.topbar-backdrop,.roomcode-menu{display:none}@media (width<=720px){.topbar{gap:8px;padding:8px 12px}.roomcode{display:none}.roomcode-menu{border-bottom:1px solid var(--line);letter-spacing:1px;color:var(--muted);margin-bottom:4px;padding:4px 8px 8px;font-size:12px;font-weight:650;display:block}.topbar-actions{flex:none;display:block;position:relative}.more-toggle{justify-content:center;align-items:center;padding:6px 12px;font-size:18px;line-height:1;display:inline-flex}.topbar-actions-items{z-index:20;background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;align-items:stretch;gap:6px;min-width:168px;padding:8px;display:none;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 6px 20px #3c2d192e}.topbar-actions[data-open=true] .topbar-actions-items{display:flex}.topbar-actions-items .inline{text-align:left;justify-content:flex-start;width:100%}.topbar-backdrop{z-index:15;display:block;position:fixed;inset:0}}.players{flex:none;align-items:center;gap:4px;display:flex}.playerdot{color:#fff;width:24px;height:24px;box-shadow:0 0 0 2px var(--panel);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.conn{color:var(--muted);letter-spacing:1px;font-size:11px;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.timer{border:1px solid var(--line);background:#fff;border-radius:999px;flex:none;align-items:center;gap:6px;padding:3px 6px 3px 10px;display:flex}.timer.is-done{background:#f0f7f1;border-color:#2f7d4f}.timer-value{font-variant-numeric:tabular-nums;text-align:right;min-width:42px;font-size:13px;font-weight:650}.timer-final{color:#2f7d4f;font-size:12px;font-weight:650}.timer-btn{background:var(--board);width:24px;height:24px;color:var(--ink);cursor:pointer;border:0;border-radius:50%;place-items:center;margin:0;padding:0;font-size:11px;line-height:1;display:grid}.timer-btn.subtle{color:var(--muted);background:0 0}.refimage{border:2px solid var(--panel);pointer-events:none;z-index:5;border-radius:10px;width:min(34%,320px);position:absolute;bottom:16px;right:16px;overflow:hidden;box-shadow:0 4px 18px #3c2d1938}.refimage img{width:100%;height:auto;display:block}.chat{border-left:1px solid var(--line);background:var(--panel);flex-direction:column;flex:none;width:280px;display:flex}.chat-head{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;padding:10px 12px;font-size:13px;font-weight:650;display:flex}.chat-log{flex-direction:column;flex:1;gap:8px;min-height:0;padding:12px;display:flex;overflow-y:auto}.chat-empty{color:var(--muted);margin:0;font-size:12.5px}.chat-line{word-break:break-word;font-size:13px;line-height:1.4}.chat-name{margin-right:6px;font-weight:650}.chat-line.mine .chat-text{color:var(--ink)}.chat-input{border-top:1px solid var(--line);flex:none;gap:6px;padding:10px;display:flex}.chat-input input{flex:1;min-width:0}.dash{max-width:1040px;margin:0 auto;padding:20px 20px 64px}.dashhead{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;padding-bottom:16px;display:flex}.dashhead-l h1{font-size:18px}.dashhead-r{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.dashhead-r .joinrow{gap:6px}.dashhead-r .codeinput{width:96px}.shelf{margin-top:28px}.shelf h2{letter-spacing:.2px;margin:0 0 12px;font-size:13px;font-weight:650}.shelf-empty{color:var(--muted);margin:0;font-size:12.5px}.libgrid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.libcard{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 1px 2px #3c2d190f}.libcard-thumb{background:var(--board);position:relative}.libcard-thumb img{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.libcard-del{color:#fff;cursor:pointer;opacity:0;background:#22262e8c;border:0;border-radius:50%;place-items:center;width:26px;height:26px;margin:0;padding:0;font-size:16px;line-height:1;transition:opacity .12s;display:grid;position:absolute;top:6px;right:6px}.libcard:hover .libcard-del,.libcard-del:focus-visible{opacity:1}.libcard-body{flex-direction:column;flex:1;gap:6px;padding:10px 12px 12px;display:flex}.libcard-title{align-items:center;gap:4px;margin:0;font-size:13px;font-weight:650;display:flex}.title-text{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.title-edit-btn{width:auto;color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:0;flex:none;margin:0;padding:0 2px;font-size:12px;line-height:1;transition:opacity .12s}.libcard:hover .title-edit-btn,.title-edit-btn:focus-visible{opacity:1}.title-input{width:100%;padding:3px 7px;font-size:13px;font-weight:650}.libcard-meta{color:var(--muted);margin:0;font-size:12px}.libcard-with{color:var(--accent);margin:0;font-size:12px;font-weight:500}.stars{gap:1px;display:flex}.star{color:#d9a441;cursor:pointer;background:0 0;border:0;width:auto;margin:0;padding:0 1px;font-size:17px;line-height:1}.note-add{align-self:flex-start;font-size:12px}.note-text{color:var(--ink);white-space:pre-wrap;cursor:text;margin:0;font-size:12.5px;line-height:1.4}.note-input{resize:vertical;width:100%;min-height:52px;font-size:12.5px}.note-actions{align-items:center;gap:8px;margin-top:6px;display:flex}.tags{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.tag{background:var(--board);color:var(--ink);border-radius:999px;align-items:center;gap:3px;padding:2px 4px 2px 8px;font-size:11.5px;display:inline-flex}.tag-x{width:15px;height:15px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;margin:0;padding:0;font-size:13px;line-height:1}.tag-add{border:1px dashed var(--line);width:auto;color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;margin:0;padding:2px 8px;font-size:11.5px}.tag-input{width:80px;padding:3px 8px;font-size:11.5px}.tagbar{flex-wrap:wrap;align-items:center;gap:6px;margin-top:24px;display:flex}.tagbar-label{color:var(--muted);margin-right:2px;font-size:12px}.libcard-progress{gap:8px;overflow:visible}.libcard-pct{font-variant-numeric:tabular-nums;color:var(--muted);flex:none;font-size:12px}.libcard-note{color:var(--muted);margin:0;font-size:12.5px}.libcard-note b{color:var(--ink);font-variant-numeric:tabular-nums}.libcard-actions{margin-top:auto;padding-top:4px}.libcard-actions button{width:100%;margin-top:0}.challenge{background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-top:24px;padding:16px 18px;box-shadow:0 1px 2px #3c2d190f}.challenge-head{justify-content:space-between;align-items:center;display:flex}.challenge h2{letter-spacing:.2px;margin:0;font-size:13px;font-weight:650}.challenge-edit{font-size:12.5px}.challenge-progress{gap:10px;margin-top:12px;overflow:visible}.challenge-count{color:var(--muted);flex:none;font-size:12.5px}.challenge-count b{color:var(--ink);font-size:14px;font-weight:650}.challenge-pace{color:var(--muted);margin:8px 0 0;font-size:12.5px}.challenge-set{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;font-size:13px;display:flex}.challenge-input{width:72px}.feed{background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-top:24px;padding:16px 18px;box-shadow:0 1px 2px #3c2d190f}.feed h2{letter-spacing:.2px;margin:0 0 8px;font-size:13px;font-weight:650}.feed-row{border-top:1px solid var(--line);align-items:center;gap:12px;padding:9px 0;display:flex}.feed-thumb{object-fit:cover;background:var(--board);border-radius:8px;flex:none;width:44px;height:44px}.feed-text{min-width:0}.feed-line{margin:0;font-size:13px;line-height:1.35}.feed-meta{color:var(--muted);margin:2px 0 0;font-size:12px}.friends{background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-top:24px;padding:16px 18px;box-shadow:0 1px 2px #3c2d190f}.friends h2{letter-spacing:.2px;margin:0 0 12px;font-size:13px;font-weight:650}.friend-row{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;font-size:13px;display:flex}.friend-actions{gap:6px;display:flex}.friend-row button{width:auto;padding:5px 12px}.friend-chips{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.friend-chip{background:var(--board);color:var(--ink);border-radius:999px;padding:4px 12px;font-size:12.5px;font-weight:500}.friend-pending{color:var(--muted);margin:10px 0 0;font-size:12px}.pb-badge{color:#fff;letter-spacing:.4px;vertical-align:middle;background:#2f7d4f;border-radius:999px;margin-left:8px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-block}
