.page[data-v-e88c7089]{min-height:100vh;font-family:system-ui,-apple-system,sans-serif}.topbar[data-v-e88c7089]{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:1rem;height:56px;padding:0 1.5rem;background:linear-gradient(135deg,#1a3a5c,#2d6aa0);color:#fff}.brand[data-v-e88c7089]{font-size:1.25rem;font-weight:700;letter-spacing:.5px;color:#fff;text-decoration:none;white-space:nowrap}.controls[data-v-e88c7089]{flex:1;display:flex;gap:.75rem;justify-content:center;min-width:0}.cat-select[data-v-e88c7089]{padding:.45rem .6rem;border:1px solid rgba(255,255,255,.5);border-radius:6px;background:#ffffff1f;color:#fff;cursor:pointer;white-space:nowrap}.cat-select option[data-v-e88c7089]{color:#333}.search-input[data-v-e88c7089]{flex:1;max-width:480px;min-width:0;padding:.45rem .8rem;border:1px solid transparent;border-radius:6px;background:#fff;color:#333;font-size:.95rem}.search-input[data-v-e88c7089]:focus{outline:2px solid rgba(255,255,255,.6);outline-offset:1px}.login-btn[data-v-e88c7089]{padding:.45rem 1rem;border:1px solid rgba(255,255,255,.5);border-radius:6px;background:#ffffff1f;color:#fff;font-size:.95rem;cursor:pointer;white-space:nowrap}.login-btn[data-v-e88c7089]:hover{background:#ffffff3d;border-color:#fffc}.home[data-v-e88c7089]{max-width:960px;margin:0 auto;padding:2rem}.hint[data-v-e88c7089]{color:#999}.error[data-v-e88c7089]{color:#c00}.project-list[data-v-e88c7089]{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.project-card[data-v-e88c7089]{display:flex;flex-direction:column;overflow:hidden;border:1px solid #e0e0e0;border-radius:8px;background:#fff;text-decoration:none;color:inherit;transition:border-color .2s,box-shadow .2s}.project-card[data-v-e88c7089]:hover{border-color:#4a90d9;box-shadow:0 2px 8px #00000014}.cover[data-v-e88c7089]{width:100%;aspect-ratio:16 / 10;object-fit:cover;display:block;background:#eef1f5}.cover-fallback[data-v-e88c7089]{display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;color:#1a3a5c}.card-body[data-v-e88c7089]{padding:.9rem 1.1rem 1rem}.project-card h2[data-v-e88c7089]{margin:0 0 .5rem;font-size:1.1rem}.desc[data-v-e88c7089]{margin:0;color:#666;font-size:.9rem}.author[data-v-e88c7089]{margin:.5rem 0 0;color:#999;font-size:.85rem}.auth-area[data-v-e88c7089]{display:flex;align-items:center;gap:.5rem;white-space:nowrap}.user-name[data-v-e88c7089]{color:#ffffffeb;font-size:.92rem}.login-btn.link[data-v-e88c7089]{text-decoration:none;display:inline-block}.modal-mask[data-v-e88c7089]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:20;padding:1rem}.modal[data-v-e88c7089]{background:#fff;border-radius:10px;padding:1.5rem;width:100%;max-width:360px}.modal h3[data-v-e88c7089]{margin:0 0 1rem}.field[data-v-e88c7089]{display:block;margin-bottom:.9rem}.field span[data-v-e88c7089]{display:block;font-size:.85rem;color:#666;margin-bottom:.3rem}.field input[data-v-e88c7089]{width:100%;padding:.5rem .6rem;border:1px solid #ccc;border-radius:6px;font-size:.95rem;box-sizing:border-box}.btn[data-v-e88c7089]{padding:.45rem .9rem;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;font-size:.9rem}.btn.primary[data-v-e88c7089]{background:#2d6aa0;border-color:#2d6aa0;color:#fff}.modal-actions[data-v-e88c7089]{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1rem}.player[data-v-d5a942af]{height:100vh;display:flex;flex-direction:column;font-family:system-ui,-apple-system,sans-serif}.toolbar[data-v-d5a942af]{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;border-bottom:1px solid #14324f;background:linear-gradient(135deg,#1a3a5c,#2d6aa0);color:#fff}.title[data-v-d5a942af]{margin:0;font-size:1rem;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spacer[data-v-d5a942af]{flex:1}.version-select[data-v-d5a942af]{padding:.4rem .5rem;border:1px solid rgba(255,255,255,.5);border-radius:6px;background:#ffffff1f;color:#fff}.version-select option[data-v-d5a942af]{color:#333}.btn[data-v-d5a942af]{padding:.4rem .75rem;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;text-decoration:none;color:inherit;font-size:.9rem}.btn[data-v-d5a942af]:hover{border-color:#4a90d9}.toolbar .btn[data-v-d5a942af]{border:1px solid rgba(255,255,255,.5);background:#ffffff1f;color:#fff}.toolbar .btn[data-v-d5a942af]:hover{background:#ffffff3d;border-color:#fffc}.frame[data-v-d5a942af]{flex:1;width:100%;border:none}.hint[data-v-d5a942af]{padding:2rem;text-align:center;color:#999}.error[data-v-d5a942af]{color:#c00}.modal-mask[data-v-d5a942af]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:10}.modal[data-v-d5a942af]{background:#fff;border-radius:10px;padding:1.5rem;min-width:320px;max-width:480px;max-height:80vh;overflow:auto}.modal h3[data-v-d5a942af]{margin:0 0 1rem}.modal dl[data-v-d5a942af]{display:grid;grid-template-columns:90px 1fr;gap:.5rem 1rem;margin:0 0 1rem}.modal dt[data-v-d5a942af]{color:#888}.modal dd[data-v-d5a942af]{margin:0;word-break:break-word}.admin[data-v-bb1ce16a]{min-height:100vh;font-family:system-ui,-apple-system,sans-serif;background:#f5f7fa}.topbar[data-v-bb1ce16a]{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:1rem;height:56px;padding:0 1.5rem;background:linear-gradient(135deg,#1a3a5c,#2d6aa0);color:#fff}.brand[data-v-bb1ce16a]{font-size:1.25rem;font-weight:700;letter-spacing:.5px;color:#fff;text-decoration:none;white-space:nowrap}.subtitle[data-v-bb1ce16a]{color:#ffffffbf;font-size:.9rem}.spacer[data-v-bb1ce16a]{flex:1}.content[data-v-bb1ce16a]{max-width:1100px;margin:0 auto;padding:2rem}.table[data-v-bb1ce16a]{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 4px #0000000f}.table th[data-v-bb1ce16a],.table td[data-v-bb1ce16a]{padding:.6rem .8rem;text-align:left;border-bottom:1px solid #eee;font-size:.9rem}.table th[data-v-bb1ce16a]{background:#fafbfc;color:#666;font-weight:600}.mono[data-v-bb1ce16a]{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ops[data-v-bb1ce16a]{text-align:right;white-space:nowrap}.badge[data-v-bb1ce16a]{padding:.15rem .5rem;border-radius:10px;font-size:.78rem;background:#eef1f5;color:#555}.badge.published[data-v-bb1ce16a],.badge.active[data-v-bb1ce16a]{background:#e6f4ea;color:#1e7e34}.btn[data-v-bb1ce16a]{padding:.45rem .9rem;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;font-size:.9rem}.btn[data-v-bb1ce16a]:disabled{opacity:.5;cursor:not-allowed}.btn.primary[data-v-bb1ce16a]{background:#2d6aa0;border-color:#2d6aa0;color:#fff}.topbar .btn.primary[data-v-bb1ce16a]{background:#ffffff29;border-color:#ffffff80}.topbar .btn.primary[data-v-bb1ce16a]:hover{background:#ffffff42}.mini[data-v-bb1ce16a]{padding:.25rem .6rem;border:1px solid #ccc;border-radius:5px;background:#fff;cursor:pointer;font-size:.82rem}.mini[data-v-bb1ce16a]:hover{border-color:#4a90d9;color:#2d6aa0}.hint[data-v-bb1ce16a]{color:#999;padding:2rem 0}.error[data-v-bb1ce16a]{color:#c00}.muted[data-v-bb1ce16a]{color:#999;font-size:.82rem}.modal-mask[data-v-bb1ce16a]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:20;padding:1rem}.modal[data-v-bb1ce16a]{background:#fff;border-radius:10px;padding:1.5rem;width:100%;max-width:480px;max-height:88vh;overflow:auto}.modal.wide[data-v-bb1ce16a]{max-width:760px}.modal h3[data-v-bb1ce16a]{margin:0 0 1rem}.modal h4[data-v-bb1ce16a]{margin:0 0 .75rem}.field[data-v-bb1ce16a]{display:block;margin-bottom:.9rem}.field span[data-v-bb1ce16a]{display:block;font-size:.85rem;color:#666;margin-bottom:.3rem}.field input[data-v-bb1ce16a],.field textarea[data-v-bb1ce16a],.field select[data-v-bb1ce16a]{width:100%;padding:.5rem .6rem;border:1px solid #ccc;border-radius:6px;font-size:.95rem;box-sizing:border-box}.cover-preview[data-v-bb1ce16a]{margin-bottom:.9rem}.cover-preview img[data-v-bb1ce16a]{max-width:200px;max-height:120px;border-radius:6px;border:1px solid #e0e0e0;display:block}.modal-actions[data-v-bb1ce16a]{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1rem}.divider[data-v-bb1ce16a]{border:none;border-top:1px solid #eee;margin:1.2rem 0}.nav[data-v-bb1ce16a]{display:flex;gap:.25rem}.tab[data-v-bb1ce16a]{padding:.4rem .9rem;border:none;border-radius:6px;background:transparent;color:#ffffffbf;cursor:pointer;font-size:.9rem}.tab.active[data-v-bb1ce16a]{background:#ffffff2e;color:#fff}.user-name[data-v-bb1ce16a]{color:#ffffffe6;font-size:.9rem}.topbar .btn.logout[data-v-bb1ce16a]{background:transparent;border-color:#ffffff80;color:#fff}.toolbar[data-v-bb1ce16a]{display:flex;justify-content:flex-end;margin-bottom:1rem}.roles[data-v-bb1ce16a]{display:flex;gap:1rem;margin-bottom:.9rem;font-size:.9rem}.roles label[data-v-bb1ce16a]{display:flex;align-items:center;gap:.3rem;cursor:pointer}.login[data-v-d5a1d3db]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a3a5c,#2d6aa0);font-family:system-ui,-apple-system,sans-serif;padding:1rem}.card[data-v-d5a1d3db]{width:100%;max-width:360px;background:#fff;border-radius:10px;padding:2rem;box-shadow:0 8px 30px #0003}.card h2[data-v-d5a1d3db]{margin:0 0 1.5rem;text-align:center}.field[data-v-d5a1d3db]{display:block;margin-bottom:1rem}.field span[data-v-d5a1d3db]{display:block;font-size:.85rem;color:#666;margin-bottom:.3rem}.field input[data-v-d5a1d3db]{width:100%;padding:.5rem .6rem;border:1px solid #ccc;border-radius:6px;font-size:.95rem;box-sizing:border-box}.captcha-row[data-v-d5a1d3db]{display:flex;gap:.6rem}.captcha-row input[data-v-d5a1d3db]{flex:1;min-width:0}.captcha-img[data-v-d5a1d3db]{height:38px;width:110px;border-radius:6px;border:1px solid #ddd;cursor:pointer;flex-shrink:0}.btn[data-v-d5a1d3db]{width:100%;padding:.6rem;border:1px solid #2d6aa0;border-radius:6px;background:#2d6aa0;color:#fff;cursor:pointer;font-size:1rem}.btn[data-v-d5a1d3db]:disabled{opacity:.6;cursor:not-allowed}.error[data-v-d5a1d3db]{color:#c00;font-size:.9rem;margin:0 0 .75rem}.back[data-v-d5a1d3db]{display:block;text-align:center;margin-top:1rem;color:#2d6aa0;text-decoration:none;font-size:.9rem}
