:root{--color-background:#2d2f39;--color-second-background:#ffffff14;--color-text:#f2f2f2;--color-board-text:#f2f2f2;--color-frame:#484b5b}:root[data-theme=light]{--color-background:#e0e0e0;--color-second-background:#00000014;--color-board-text:#1a1a1a;--color-frame:#b8b8b8}*,:before,:after{box-sizing:border-box;margin:0;font-weight:400}html,body,#app{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;width:100%;height:100%}input,textarea{-webkit-user-select:text;user-select:text}html{overscroll-behavior:none}body{overscroll-behavior:none;color:var(--color-board-text);background:var(--color-background);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow:hidden}#app{position:fixed;inset:0}.modal-backdrop[data-v-278cadd0]{z-index:100;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card[data-v-278cadd0]{width:100%;max-width:420px;max-height:80vh;color:var(--color-text);background:#363845;border-radius:16px;position:relative;overflow-y:auto}.modal-title[data-v-278cadd0]{border-bottom:1px solid #ffffff0d;padding:1em 24px 12px 1em;font-size:1.1rem;font-weight:700}.modal-close[data-v-278cadd0]{width:32px;height:32px;color:var(--color-text);opacity:.7;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;transition:opacity .15s,background .15s;display:flex;position:absolute;top:12px;right:12px}.modal-close svg[data-v-278cadd0]{width:16px;height:16px}.modal-close[data-v-278cadd0]:hover,.modal-close[data-v-278cadd0]:active{opacity:1;background:#ffffff1a}.modal-content[data-v-278cadd0]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.modal-content button[data-v-278cadd0]{-webkit-user-select:none;user-select:none}.modal-content[data-v-278cadd0]{padding:1em;font-size:.95rem}.modal-footer[data-v-278cadd0]{border-top:1px solid #ffffff0d;padding:1em}.rows[data-v-976f0f76]{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.row[data-v-976f0f76]{width:100%;color:var(--color-text);text-align:left;cursor:pointer;touch-action:manipulation;background:#ffffff0a;border:none;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.row[data-v-976f0f76]:hover,.row[data-v-976f0f76]:active{background:#ffffff1a}.row.current[data-v-976f0f76]{background:#ffffff24}.row.highlighted[data-v-976f0f76]{outline-offset:-2px;outline:2px solid #ffffff80}.row-date[data-v-976f0f76]{align-items:baseline;gap:6px;min-width:108px;display:flex}.weekday[data-v-976f0f76]{opacity:.8;font-weight:600}.day[data-v-976f0f76]{opacity:.8}.today-tag[data-v-976f0f76]{text-transform:uppercase;opacity:.6;font-size:.7rem;font-weight:700}.row-status[data-v-976f0f76]{flex-direction:column;flex:1;align-items:flex-end;gap:4px;display:flex}.status-label[data-v-976f0f76]{opacity:.75;font-size:.8rem}.status-label.solved[data-v-976f0f76]{opacity:1;color:#7fd48a}.progress-track[data-v-976f0f76]{background:#ffffff1f;border-radius:999px;width:100%;max-width:140px;height:4px;overflow:hidden}.progress-fill[data-v-976f0f76]{background:#ffffff8c;border-radius:999px;height:100%;transition:width .15s;display:block}.progress-fill.solved[data-v-976f0f76]{background:#7fd48a}p[data-v-8c6f6a11]{margin-bottom:1em}p[data-v-8c6f6a11]:last-child{margin-bottom:0}.attribution[data-v-8c6f6a11],.no-attribution[data-v-8c6f6a11]{opacity:.6;font-size:.875rem}.attribution a[data-v-8c6f6a11]{color:inherit}.footer[data-v-8c6f6a11]{cursor:default;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:baseline;gap:12px;font-size:.75rem;display:flex}.copyright[data-v-8c6f6a11],.build-hash[data-v-8c6f6a11]{opacity:.4}.build-hash[data-v-8c6f6a11]{white-space:nowrap;font-family:monospace}p[data-v-1ea29041]{opacity:.9;font-size:.95rem;line-height:1.5}p+p[data-v-1ea29041]{margin-top:12px}.btn-icon[data-v-1ea29041]{vertical-align:middle;background:#ffffff1f;border-radius:999px;justify-content:center;align-items:center;width:1.45em;height:1.45em;margin:0 .12em;display:inline-flex}.btn-icon svg[data-v-1ea29041]{width:.9em;height:.9em;display:block}.shortcuts-heading[data-v-1ea29041]{opacity:1;font-weight:700}.shortcuts[data-v-1ea29041]{flex-direction:column;gap:8px;margin:8px 0 0;padding:0;list-style:none;display:flex}.shortcuts li[data-v-1ea29041]{align-items:center;gap:10px;font-size:.9rem;display:flex}.shortcuts li span[data-v-1ea29041]{opacity:.85}kbd[data-v-1ea29041]{background:#ffffff1a;border-radius:6px;justify-content:center;align-items:center;min-width:1.6em;padding:2px 6px;font-family:inherit;font-size:.85rem;font-weight:600;display:inline-flex}p[data-v-ae3e6ee8]{opacity:.9;font-size:.95rem;line-height:1.5}p+p[data-v-ae3e6ee8],.install-btn[data-v-ae3e6ee8]{margin-top:12px}.install-btn[data-v-ae3e6ee8]{width:100%;color:var(--color-text);cursor:pointer;touch-action:manipulation;background:#ffffff24;border:none;border-radius:8px;padding:12px 16px;font-size:.95rem;font-weight:600;display:block}.install-btn[data-v-ae3e6ee8]:hover,.install-btn[data-v-ae3e6ee8]:active{background:#ffffff38}.setting-row[data-v-8879e610]{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.setting-row[data-v-8879e610]:first-child{padding-top:0}.setting-row[data-v-8879e610]:last-child{border-bottom:none;padding-bottom:0}.setting-label[data-v-8879e610]{font-size:.95rem}.segmented[data-v-8879e610]{background:#ffffff14;border-radius:8px;padding:2px;display:flex}.segment[data-v-8879e610]{color:var(--color-text);opacity:.7;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px;display:flex}.segment svg[data-v-8879e610]{width:16px;height:16px}.segment-text[data-v-8879e610]{padding:6px 10px;font-size:.8rem;font-weight:600}.segment.active[data-v-8879e610]{opacity:1;background:#ffffff29}.switch[data-v-8879e610]{cursor:pointer;touch-action:manipulation;background:#ffffff2e;border:none;border-radius:999px;flex-shrink:0;width:40px;height:24px;transition:background .15s;position:relative}.switch.on[data-v-8879e610]{background:#7fd48a}.switch-thumb[data-v-8879e610]{background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch.on .switch-thumb[data-v-8879e610]{transform:translate(16px)}.reset-btn[data-v-8879e610]{color:#d95555;cursor:pointer;touch-action:manipulation;background:#d9555526;border:none;border-radius:8px;padding:8px 14px;font-size:.85rem;font-weight:600}.reset-btn[data-v-8879e610]:hover,.reset-btn[data-v-8879e610]:active{background:#d9555540}.confirm-body[data-v-8879e610]{opacity:.9;margin-bottom:16px;font-size:.95rem;line-height:1.5}.confirm-actions[data-v-8879e610]{justify-content:flex-end;gap:8px;display:flex}.confirm-actions button[data-v-8879e610]{cursor:pointer;touch-action:manipulation;border:none;border-radius:8px;padding:10px 16px;font-size:.9rem;font-weight:600}.confirm-cancel[data-v-8879e610]{color:var(--color-text);background:#ffffff14}.confirm-danger[data-v-8879e610]{color:#fff;background:#d95555}.backup-row[data-v-8879e610]{flex-direction:column;align-items:stretch}.backup-row-top[data-v-8879e610]{justify-content:space-between;align-items:center;gap:16px;display:flex}.backup-actions[data-v-8879e610]{gap:8px;display:flex}.backup-btn[data-v-8879e610]{color:var(--color-text);cursor:pointer;touch-action:manipulation;background:#ffffff14;border:none;border-radius:8px;padding:8px 14px;font-size:.85rem;font-weight:600}.backup-btn[data-v-8879e610]:hover,.backup-btn[data-v-8879e610]:active{background:#ffffff29}.backup-message[data-v-8879e610]{opacity:.7;margin-top:8px;font-size:.8rem}.backup-error[data-v-8879e610]{color:#d95555;opacity:1}.visually-hidden[data-v-8879e610]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.titlebar[data-v-90820aae]{z-index:10;padding:calc(env(safe-area-inset-top,0px) + 8px) 12px 8px;background:var(--color-second-background);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--color-board-text);align-items:center;gap:8px;display:flex;position:fixed;top:0;left:0;right:0}.titlebar-side[data-v-90820aae]{align-items:center;gap:4px;min-width:88px;display:flex}.titlebar-side-right[data-v-90820aae]{justify-content:flex-end}.titlebar-date[data-v-90820aae]{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.95rem;font-weight:600;overflow:hidden}.titlebar-btn[data-v-90820aae]{width:40px;height:40px;color:var(--color-board-text);opacity:.85;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;transition:opacity .15s,background .15s,transform .15s;display:flex;position:relative}.titlebar-btn svg[data-v-90820aae]{width:18px;height:18px;position:relative}.titlebar-btn[data-v-90820aae]:hover{opacity:1;background:#ffffff1f}.titlebar-btn[data-v-90820aae]:active{opacity:1;background:#ffffff2e;transform:scale(.96)}.recenter-btn[data-v-90820aae]{touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.recenter-btn[data-v-90820aae]:before{content:"";border-radius:inherit;opacity:0;pointer-events:none;background:#8da2ffbf;position:absolute;inset:0;transform:scale(.2)}.recenter-btn.holding[data-v-90820aae]:before{opacity:1;transition:transform .8s ease-out,opacity .8s ease-out;transform:scale(1)}.recenter-btn.just-fired[data-v-90820aae]{animation:.26s ease-out recenter-fired-90820aae}@keyframes recenter-fired-90820aae{0%{background:#ffffff80;transform:scale(1.12)}to{background:0 0;transform:scale(1)}}.menu-backdrop[data-v-90820aae]{z-index:15;position:fixed;inset:0}.menu-panel[data-v-90820aae]{top:calc(env(safe-area-inset-top,0px) + 56px);z-index:20;background:#363845;border-radius:12px;flex-direction:column;min-width:180px;display:flex;position:fixed;left:12px;overflow:hidden;box-shadow:0 4px 16px #0000004d}.menu-panel button[data-v-90820aae]{color:var(--color-text);text-align:left;cursor:pointer;touch-action:manipulation;background:0 0;border:none;padding:12px 16px;font-size:.95rem}.menu-panel button[data-v-90820aae]:hover,.menu-panel button[data-v-90820aae]:active{background:#ffffff14}.perf-hud[data-v-7318125d]{bottom:max(env(safe-area-inset-bottom,0px), 4px);z-index:9999999;color:#4dff4d;pointer-events:auto;background:#000000c7;border-radius:6px;min-width:130px;padding:6px 8px;font:11px/1.4 ui-monospace,monospace;position:fixed;right:4px}.perf-hud.interacting[data-v-7318125d]{color:#fc0}.row[data-v-7318125d]{justify-content:space-between;gap:10px;display:flex}.row.hint[data-v-7318125d]{opacity:.7;justify-content:center;margin-top:2px}button[data-v-7318125d]{width:100%;font:inherit;cursor:pointer;margin-top:4px}.board[data-v-cc9662cf]{touch-action:none;background:var(--color-background);position:absolute;inset:0;overflow:hidden}.board-canvas[data-v-cc9662cf]{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.status-overlay[data-v-cc9662cf]{background:var(--color-background);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.status-message[data-v-cc9662cf]{color:var(--color-board-text);text-align:center;max-width:400px;padding:20px;font-size:1.25rem}.progress-bar[data-v-cc9662cf]{background:#ffffff1f;border-radius:999px;width:200px;max-width:60vw;height:6px;overflow:hidden}.progress-bar-fill[data-v-cc9662cf]{border-radius:inherit;background:#ffffffd9;height:100%;transition:width .15s}
