:root{--primary-color: #6366f1;--primary-hover: #4f46e5;--bg: #f5f6fb;--text: #1e293b;--muted: #64748b;--card: #ffffff;--border: #e5e9f2;--danger: #ef4444;--danger-bg: #fef2f2;--radius: 14px}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Kanit,system-ui,-apple-system,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}#root{min-height:100vh;min-height:100dvh}a{color:var(--primary-hover);text-decoration:none}a:hover{text-decoration:underline}input,textarea,select,button{font-family:inherit}.spinner{width:42px;height:42px;border:4px solid rgba(0,0,0,.1);border-top-color:var(--primary-color);border-radius:50%;animation:spin .8s linear infinite}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.page-loader{display:flex;justify-content:center;align-items:center;min-height:60vh}.app-shell{min-height:100vh;min-height:100dvh}.navbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:#ffffffe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.brand{font-weight:600;font-size:1.15rem;color:var(--text)}.brand:hover{text-decoration:none}.nav-links{display:flex;align-items:center;gap:14px}.nav-link{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-weight:500}.nav-logout{display:inline-flex;align-items:center;gap:6px;background:var(--danger-bg);color:var(--danger);border:none;border-radius:10px;padding:7px 13px;font-weight:600;cursor:pointer}.main-full{min-height:100vh;min-height:100dvh}.main-padded{padding:24px;max-width:1280px;margin:0 auto}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--primary-color);color:#fff;border:none;border-radius:10px;padding:11px 18px;font-weight:600;font-size:.95rem;cursor:pointer;transition:background .15s,transform .1s}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:active{transform:translateY(1px)}.btn-primary:disabled{background:#c7cbd6;cursor:not-allowed}.btn-ghost{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1.5px solid var(--border);border-radius:10px;padding:9px 13px;font-weight:600;font-size:.88rem;color:var(--text);cursor:pointer;transition:border-color .15s,background .15s}.btn-ghost:hover{border-color:var(--primary-color);text-decoration:none}.btn-sm{padding:6px 11px;font-size:.82rem}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:10px;background:var(--primary-color);color:#fff;cursor:pointer}.btn-icon:hover{background:var(--primary-hover)}.btn-icon-ghost{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1.5px solid var(--border);border-radius:8px;background:#fff;color:var(--muted);cursor:pointer}.btn-icon-ghost:hover:not(:disabled){border-color:var(--primary-color);color:var(--text)}.btn-icon-ghost:disabled{opacity:.4;cursor:not-allowed}.btn-icon-danger{display:inline-flex;align-items:center;justify-content:center;background:var(--danger-bg);color:var(--danger);border:none;border-radius:8px;width:32px;height:32px;cursor:pointer}.btn-icon-danger:hover{background:#fee2e2}.auth-page{min-height:100vh;min-height:100dvh;display:flex;justify-content:center;align-items:center;padding:24px;background:linear-gradient(160deg,#eef2ff,#e0e7ff,#ede9fe)}.auth-card{width:100%;max-width:400px;background:var(--card);border-radius:20px;padding:32px;box-shadow:0 20px 50px #1e1b4b1f;text-align:center}.auth-logo{font-size:3rem}.auth-title{margin:8px 0 4px;font-size:1.5rem}.auth-sub{margin:0 0 20px;color:var(--muted);font-size:.9rem}.auth-form{display:flex;flex-direction:column;gap:14px;text-align:left}.auth-form label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:var(--muted)}.auth-form input{padding:11px 12px;border:2px solid var(--border);border-radius:10px;font-size:.95rem;color:var(--text);background:#fff}.auth-form input:focus{outline:none;border-color:var(--primary-color)}.btn-google{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;background:#fff;color:var(--text);border:2px solid var(--border);border-radius:10px;padding:11px 16px;font-weight:600;cursor:pointer}.btn-google:hover{background:#f8fafc}.btn-google:disabled{opacity:.6;cursor:not-allowed}.auth-divider{display:flex;align-items:center;margin:18px 0;color:var(--muted);font-size:.8rem}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.auth-divider span{padding:0 12px}.auth-foot{margin:14px 0 0;font-size:.85rem;color:var(--muted)}.auth-error{background:var(--danger-bg);color:#b91c1c;padding:10px 12px;border-radius:10px;font-size:.85rem;margin-bottom:14px}.auth-warning{background:#fffbeb;color:#a16207;padding:10px 12px;border-radius:10px;font-size:.8rem;margin-bottom:14px}.auth-warning code{background:#0000000f;padding:1px 5px;border-radius:4px}.dashboard-head h1{margin:0 0 4px;font-size:1.6rem}.dashboard-sub{margin:0 0 20px;color:var(--muted);font-size:.9rem}.create-bar{display:flex;gap:10px;margin-bottom:24px;flex-wrap:wrap}.create-bar input{flex:1;min-width:200px;padding:11px 14px;border:2px solid var(--border);border-radius:10px;font-size:.95rem;background:#fff}.create-bar input:focus{outline:none;border-color:var(--primary-color)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}.project-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:0 6px 20px #0f172a0d;transition:transform .15s,box-shadow .15s}.project-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px #0f172a1a}.project-cover{position:relative;height:130px;display:flex;align-items:center;justify-content:center;padding:12px}.project-cover-fallback{font-weight:600;font-size:1.05rem;text-align:center;opacity:.9}.project-theme-chip{position:absolute;top:8px;right:8px;font-size:.68rem;font-weight:600;color:#fff;padding:2px 8px;border-radius:20px}.project-body{padding:14px}.project-name{margin:0 0 2px;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-meta{margin:0 0 12px;color:var(--muted);font-size:.8rem}.project-actions{display:flex;flex-wrap:wrap;gap:6px}.rename-row{display:flex;gap:6px;margin-bottom:6px}.rename-row input{flex:1;padding:6px 10px;border:2px solid var(--primary-color);border-radius:8px;font-size:.95rem}.rename-row input:focus{outline:none}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;min-height:40vh;color:var(--muted)}.empty-state h3{margin:10px 0 0;color:var(--text)}.admin-loading{display:flex;align-items:center;gap:8px;color:var(--muted);padding:30px 0}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px}.game-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:0 6px 20px #0f172a0d;transition:transform .15s,box-shadow .15s;display:flex;flex-direction:column}.game-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px #0f172a1a}.game-card.owned{border-color:var(--primary-color)}.game-cover{position:relative;height:130px;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6)}.game-owned-badge{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;gap:4px;font-size:.68rem;font-weight:600;color:#fff;background:var(--primary-color);padding:3px 9px;border-radius:20px}.game-body{padding:14px;display:flex;flex-direction:column;gap:6px;flex:1}.game-name{margin:0;font-size:1.05rem}.game-desc{margin:0;color:var(--muted);font-size:.82rem;flex:1}.game-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}.game-price{font-weight:600;font-size:.85rem;color:var(--text)}.editor-toolbar{position:sticky;top:60px;z-index:15;display:flex;align-items:center;gap:10px;padding:12px 0;margin-bottom:8px;background:var(--bg);flex-wrap:wrap}.editor-name{flex:1;min-width:180px;font-size:1.15rem;font-weight:600;padding:8px 12px;border:2px solid var(--border);border-radius:10px;color:var(--text);background:#fff}.editor-name:focus{outline:none;border-color:var(--primary-color)}.editor-toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dirty-dot{width:10px;height:10px;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 3px #f59e0b33}.editor-layout{display:block}.editor-layout.with-preview{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,460px);gap:20px;align-items:start}.editor-form{display:flex;flex-direction:column;gap:16px;min-width:0}.field-group{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:0 4px 16px #0f172a0a}.field-group-head{margin-bottom:14px}.field-group-head h3{margin:0;font-size:1.02rem;display:flex;align-items:center;gap:8px}.field-group-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.field{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:var(--muted);min-width:0}.field-wide{grid-column:1 / -1}.field input[type=text],.field textarea,.field select{padding:10px 12px;border:2px solid var(--border);border-radius:10px;font-size:.95rem;color:var(--text);background:#fff;width:100%}.field textarea{resize:vertical}.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--primary-color)}.field input[type=range]{width:100%;accent-color:var(--primary-color)}.field-color input[type=color]{width:100%;height:40px;padding:2px;border:2px solid var(--border);border-radius:10px;cursor:pointer;background:#fff}.field-label{font-weight:500;color:var(--muted);font-size:.85rem;display:inline-flex;align-items:center;gap:5px}.switch{display:flex;align-items:center;gap:10px;font-size:.9rem;color:var(--text);cursor:pointer}.switch input{width:20px;height:20px;accent-color:var(--primary-color)}.hint{grid-column:1 / -1;margin:4px 0 0;color:var(--muted);font-size:.8rem}.theme-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.theme-swatch{position:relative;display:flex;align-items:center;gap:8px;padding:12px;border:2px solid;border-radius:12px;cursor:pointer;transition:transform .12s}.theme-swatch:hover{transform:translateY(-2px)}.theme-swatch.active{box-shadow:0 0 0 3px #6366f159}.theme-dot{width:18px;height:18px;border-radius:50%;flex-shrink:0}.theme-name{font-size:.85rem;font-weight:600}.theme-check{position:absolute;top:6px;right:6px}.upload-field{display:flex;flex-direction:column;gap:6px;min-width:0}.upload-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.upload-preview{width:72px;height:72px;object-fit:cover;border-radius:10px;border:2px solid var(--border);flex-shrink:0}.upload-audio{height:40px;max-width:100%}.upload-empty{width:72px;height:72px;display:flex;align-items:center;justify-content:center;border:2px dashed var(--border);border-radius:10px;color:var(--muted);font-size:.68rem;text-align:center;flex-shrink:0}.upload-buttons{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.progress-track{width:100%;height:6px;background:var(--border);border-radius:4px;overflow:hidden}.progress-bar{height:100%;background:var(--primary-color);transition:width .2s}.items-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.items-count{color:var(--muted);font-size:.82rem;margin-left:auto}.items-list{display:flex;flex-direction:column;gap:12px}.item-card{border:1px solid var(--border);border-radius:12px;padding:12px;background:#fbfcfe}.item-card-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.item-grip{color:#cbd5e1}.item-index{font-weight:600;font-size:.85rem;color:var(--muted)}.item-reorder{display:flex;gap:4px;margin-left:auto}.item-card-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;align-items:start}.item-image-field{grid-column:1 / -1}.editor-preview{position:sticky;top:118px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:0 4px 16px #0f172a0d}.editor-preview-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border);font-weight:600;font-size:.9rem}.editor-preview-frame{position:relative;height:70vh;min-height:420px;overflow:hidden}.preview-fab{position:fixed;bottom:22px;right:22px;z-index:30;display:inline-flex;align-items:center;gap:8px;background:var(--primary-color);color:#fff;border:none;border-radius:30px;padding:12px 20px;font-weight:600;cursor:pointer;box-shadow:0 8px 24px #6366f166}.admin-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#0f172af2;color:#fff;padding:12px 22px;border-radius:30px;font-size:.9rem;z-index:200;box-shadow:0 6px 20px #00000040}.sysadmin-tabs{display:flex;gap:8px;margin-bottom:18px;border-bottom:1px solid var(--border)}.sysadmin-tab{display:inline-flex;align-items:center;gap:6px;background:none;border:none;border-bottom:3px solid transparent;padding:10px 14px;margin-bottom:-1px;font-family:inherit;font-weight:600;font-size:.92rem;color:var(--muted);cursor:pointer}.sysadmin-tab.active{color:var(--primary-color);border-bottom-color:var(--primary-color)}.sysadmin-table-wrap{overflow-x:auto;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 16px #0f172a0a}.sysadmin-table{border-collapse:collapse;width:100%;min-width:560px;font-size:.88rem}.sysadmin-table th,.sysadmin-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.sysadmin-table thead th{font-size:.78rem;color:var(--muted);background:#fbfcfe;position:sticky;top:0}.sysadmin-table .col-game{text-align:center}.sysadmin-table .col-game input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary-color);cursor:pointer}.sysadmin-table tr.row-disabled{opacity:.55}.user-email{font-weight:600;color:var(--text)}.user-name{font-size:.78rem;color:var(--muted)}.badge-super{display:inline-block;margin-top:2px;font-size:.66rem;font-weight:700;color:#fff;background:var(--primary-color);padding:1px 7px;border-radius:20px}.btn-danger{display:inline-flex;align-items:center;gap:6px;background:var(--danger-bg);color:var(--danger);border:none;border-radius:10px;padding:8px 12px;font-family:inherit;font-weight:600;font-size:.85rem;cursor:pointer}.editor-actions{display:flex;gap:8px;align-items:center}.games-tab{display:flex;flex-direction:column;gap:16px}.stage{position:relative;width:100%;height:100vh;height:100dvh;overflow:hidden;color:var(--text-color);display:flex;flex-direction:column}.stage-preview{height:100%}.stage-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.stage-bg-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.stage-bg-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--background-color)}.stage-content{position:relative;z-index:1;flex:1;overflow-y:auto;display:flex;flex-direction:column;align-items:center;padding:clamp(20px,5vw,56px);padding-top:max(clamp(20px,5vw,56px),env(safe-area-inset-top));gap:24px}.stage-header{text-align:center;max-width:760px}.stage-title{margin:0;font-size:clamp(1.6rem,5vw,2.8rem);font-weight:700;text-shadow:0 2px 12px rgba(0,0,0,.25)}.stage-desc{margin:10px 0 0;font-size:clamp(.95rem,2.4vw,1.15rem);opacity:.9}.stage-progress{margin:10px 0 0;font-weight:600;opacity:.85}.stage-grid{width:100%;max-width:1000px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:clamp(12px,2.5vw,20px)}.stage-item{display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px;border:1.5px solid var(--glass-border);border-radius:18px;background:var(--glass-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text-color);cursor:pointer;transition:transform .15s,box-shadow .2s,border-color .2s}.stage-item:hover{transform:translateY(-4px)}.stage-item.selected{border-color:var(--item-color, var(--primary-color));box-shadow:0 0 0 3px var(--item-color, var(--primary-color)),0 12px 28px #00000040}.stage-item-visual{width:100%;aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;border-radius:12px;overflow:hidden}.stage-item-visual img{width:100%;height:100%;object-fit:cover}.stage-item-swatch{width:100%;height:100%;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#ffffffeb}.stage-item-name{font-weight:600;font-size:.95rem;text-align:center;word-break:break-word}.stage-item-link{position:relative;text-decoration:none}.stage-item-link:hover{text-decoration:none;border-color:var(--item-color, var(--primary-color))}.stage-item-badge{display:inline-flex;align-items:center;gap:4px;font-size:.76rem;font-weight:600;color:#fff;background:var(--item-color, var(--primary-color));padding:3px 10px;border-radius:20px}.stage-empty{opacity:.8;padding:40px 0}.stage-done{font-size:1.4rem;font-weight:700;padding:12px 28px;border-radius:30px;background:var(--glass-bg);border:1.5px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:pop .4s ease}@keyframes pop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.stage-controls{position:absolute;z-index:3;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));display:flex;gap:10px}.stage-ctrl{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:1.5px solid var(--glass-border);background:var(--glass-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text-color);cursor:pointer;transition:transform .1s,background .15s}.stage-ctrl:hover{background:var(--primary-color);color:#fff}.stage-ctrl:active{transform:scale(.94)}.stage-volume-panel{position:absolute;z-index:3;right:max(16px,env(safe-area-inset-right));bottom:calc(max(16px,env(safe-area-inset-bottom)) + 60px);width:240px;max-width:calc(100vw - 32px);display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:16px;border:1.5px solid var(--glass-border);background:var(--glass-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 12px 30px #00000040}.stage-volume-panel label{display:flex;flex-direction:column;gap:6px;font-size:.82rem;font-weight:600}.stage-volume-panel input[type=range]{width:100%;accent-color:var(--primary-color)}.public-fallback{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding:32px;background:linear-gradient(160deg,#1e1b4b,#312e81 60%,#4c1d95);color:#e2e8f0}.public-fallback h1{margin:0;font-size:clamp(1.6rem,6vw,2.6rem)}.public-fallback p{margin:0;max-width:520px;opacity:.85}.welcome-badge{font-size:3.4rem}.welcome-hint{font-size:.9rem;opacity:.7!important}.public-fallback .btn-primary{margin-top:10px}.public-fallback .btn-ghost{background:transparent;color:#e2e8f0;border-color:#ffffff4d}@media(max-width:960px){.editor-layout.with-preview{grid-template-columns:1fr}.editor-preview{position:static;order:-1}.editor-preview-frame{height:52vh}}@media(max-width:720px){.main-padded{padding:16px}.navbar{padding:10px 16px}.editor-toolbar{top:56px}.stage-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}@media(max-width:480px){.brand{font-size:1rem}.stage-grid{grid-template-columns:repeat(2,1fr)}.stage-ctrl{width:44px;height:44px}}@media(max-height:480px)and (orientation:landscape){.stage-content{padding:16px;gap:14px}.stage-title{font-size:1.4rem}}
