:root{--bg: #0b0d12;--bg2: #11141b;--panel: #151922;--panel2: #1b2030;--line: #262c3b;--text: #e8ecf3;--muted: #8a93a6;--accent: #3ddc84;--accent2: #00e5ff;--danger: #ff5470;--warn: #ffb547;--radius: 10px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg);color:var(--text);font:14px/1.5 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent2);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0 0 .5em;line-height:1.2}h1{font-size:28px}h2{font-size:20px}h3{font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}h4{font-size:13px;color:var(--muted);margin-top:8px}input,select,textarea,button{font:inherit;color:inherit}input:not([type=range]):not([type=checkbox]):not([type=color]),select,textarea{background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:7px 10px;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 50%,transparent);outline-offset:-1px}textarea{resize:vertical;width:100%}input[type=range]{accent-color:var(--accent)}input[type=color]{width:34px;height:30px;padding:0;border:1px solid var(--line);border-radius:6px;background:none}.muted{color:var(--muted)}.small{font-size:12px}.warn{color:var(--warn)}.mono{font-family:ui-monospace,monospace}.cap{text-transform:capitalize}.center{text-align:center;display:flex;justify-content:center}.mt{margin-top:20px}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:10px}.spacer{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,transform .05s;color:var(--text)}.btn:hover{background:#232a3d;text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#07140c;font-weight:600}.btn.primary:hover{background:#5be79a}.btn.accent{background:var(--accent2);border-color:var(--accent2);color:#001418;font-weight:600}.btn.danger{border-color:color-mix(in srgb,var(--danger) 50%,var(--line));color:var(--danger)}.btn.ghost{background:transparent}.btn.small{padding:4px 10px;font-size:12px}.btn.big{padding:12px 20px;font-size:15px}.icon-btn{background:none;border:0;cursor:pointer;color:var(--muted);padding:2px 6px;border-radius:6px}.icon-btn:hover{color:var(--text);background:var(--panel2)}.link-btn{background:none;border:0;color:var(--accent2);cursor:pointer;padding:0}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;border:1px solid var(--line);background:var(--bg2);cursor:pointer;font-size:12px;color:var(--text)}.chip.active{border-color:var(--danger);color:var(--danger)}.chip.ghost{cursor:default;color:var(--muted)}.chip.big{font-size:15px;padding:6px 14px}.badge{position:absolute;top:8px;left:8px;font-size:11px;padding:2px 8px;border-radius:6px;background:#0009;color:var(--muted);border:1px solid var(--line)}.badge.danger{color:var(--danger);left:auto;right:8px}.stage-tools .badge,.report .badge{position:static}.app{display:flex;flex-direction:column;min-height:100vh}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:20px;padding:10px 20px;background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:17px;color:var(--text)}.brand:hover{text-decoration:none}.mainnav{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none}.mainnav a{padding:6px 12px;border-radius:8px;color:var(--muted);white-space:nowrap}.mainnav a:hover{color:var(--text);text-decoration:none;background:var(--panel)}.mainnav a.active{color:var(--text);background:var(--panel2)}.topbar-right{display:flex;align-items:center;gap:10px}.lang{padding:5px 8px!important}.usermenu{position:relative}.user-btn{display:flex;align-items:center;gap:8px;background:none;border:0;cursor:pointer;padding:4px;border-radius:8px}.user-btn:hover{background:var(--panel)}.user-name{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:6px;display:flex;flex-direction:column;min-width:180px;box-shadow:0 10px 40px #00000080}.dropdown button{text-align:left;background:none;border:0;padding:8px 10px;border-radius:6px;cursor:pointer}.dropdown button:hover{background:var(--panel2)}.avatar{border-radius:50%;object-fit:cover;flex:none}.avatar.placeholder{display:inline-grid;place-items:center;background:var(--panel2);font-weight:600;font-size:12px}.content{flex:1;width:100%}.footer{display:flex;justify-content:space-between;padding:20px;color:var(--muted);border-top:1px solid var(--line);font-size:12px}.page{max-width:1280px;margin:0 auto;padding:24px 20px 60px}.page.narrow{max-width:760px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}.page-head h1,.page-head h2{margin:0}.section-title{margin-top:24px}.empty{color:var(--muted);text-align:center;padding:40px 0}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.card.pad{padding:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.panel-head h3{margin:0}.tabs{display:flex;gap:4px;align-items:center;margin-bottom:16px;border-bottom:1px solid var(--line);flex-wrap:wrap}.tab{background:none;border:0;border-bottom:2px solid transparent;padding:8px 12px;cursor:pointer;color:var(--muted)}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.tab-select{margin-left:8px}.searchbar input{width:280px}.preview{position:relative;width:100%;height:100%;overflow:hidden}.preview canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.preview.interactive{cursor:crosshair;user-select:none;touch-action:none}.bg-dark{background:#14161c}.bg-light{background:#d9dde4}.bg-checker{background:repeating-conic-gradient(#2a2f3a 0 25%,#1c2029 0 50%) 0 0 / 20px 20px}.bg-scene{background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.35) 55.2%),radial-gradient(ellipse at 30% 75%,#6b5a45 0,transparent 45%),radial-gradient(ellipse at 75% 70%,#4b5563 0,transparent 40%),linear-gradient(180deg,#8fb3d9,#c7d6e4 45%,#a08a6c 55%,#7a6650)}.swatch{width:22px;height:22px;border-radius:6px;border:2px solid var(--line);cursor:pointer;padding:0}.swatch.active{border-color:var(--accent)}.stage{height:420px;border-radius:var(--radius);border:1px solid var(--line)}.small-stage{height:280px}.stage-tools{display:flex;align-items:center;gap:8px;margin:10px 0;flex-wrap:wrap}.zoom{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.item-card{display:flex;flex-direction:column;overflow:hidden;transition:border-color .15s,transform .15s}.item-card:hover{border-color:#3a4256;transform:translateY(-2px)}.card-preview{position:relative;display:block;height:160px}.card-body{padding:10px 12px 4px;display:flex;flex-direction:column;gap:2px;min-width:0}.card-title{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-author{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}.card-actions{display:flex;align-items:center;gap:6px;padding:8px 12px 12px}.home{max-width:1280px;margin:0 auto;padding:24px 20px 60px}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:center;padding:30px 0 40px}.hero h1{font-size:46px;letter-spacing:-.02em}.hero .lead{font-size:17px;color:var(--muted);max-width:520px}.hero-preview .stage{height:380px;box-shadow:0 30px 80px #00000080}.features{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:40px}.feature{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.feature h3{color:var(--text);text-transform:none;letter-spacing:0;font-size:16px}.feature p{color:var(--muted);margin:0}.download-buttons{display:flex;align-items:center;gap:14px;margin-top:18px;flex-wrap:wrap}.download-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.download-grid .card{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.how li{margin-bottom:6px}.notes{white-space:pre-wrap;background:var(--panel);padding:12px;border-radius:8px}.item-page{display:grid;grid-template-columns:1fr 340px;gap:24px}.item-stage .stage{height:520px}.item-side{display:flex;flex-direction:column;gap:14px}.author-line{display:flex;align-items:center;gap:8px;color:var(--text)}.desc{white-space:pre-wrap;color:var(--muted);margin:0}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{font-size:12px;background:var(--panel2);padding:2px 8px;border-radius:6px;color:var(--muted)}.stats{display:flex;gap:8px}.actions-col{display:flex;flex-direction:column;gap:8px}.owner-box{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:10px}.pattern-stage{display:grid;grid-template-columns:1fr 1fr;gap:14px}.pattern-stage>.preview{height:520px;border-radius:var(--radius);border:1px solid var(--line)}.pattern-test .stage{height:440px}.editor{display:grid;grid-template-columns:260px 1fr 340px;gap:14px;padding:14px;max-width:1600px;margin:0 auto;align-items:start}.editor-center .stage{height:calc(100vh - 230px);min-height:360px}.editor-actions{display:flex;gap:8px;flex-wrap:wrap}.name-input{flex:1;min-width:160px;font-weight:600}.editor-right{position:sticky;top:70px;max-height:calc(100vh - 84px);display:flex;flex-direction:column}.editor-right .tabs{margin-bottom:10px}.editor-right .tab{padding:6px 8px;font-size:13px}.panel-scroll{overflow-y:auto;padding-right:4px}.layer-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.layer-list li{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:8px;cursor:pointer}.layer-list li:hover{background:var(--panel2)}.layer-list li.active{background:var(--panel2);outline:1px solid var(--accent)}.layer-dot{width:12px;height:12px;border-radius:3px;border:1px solid rgba(255,255,255,.3);flex:none}.layer-name{flex:1}.add-select{max-width:140px}.preset-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.preset{height:64px;padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;cursor:pointer;background:none}.preset:hover{border-color:var(--accent)}.track{border:1px solid var(--line);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--bg2)}.track .row>.field{flex:1}.key-row{display:grid;grid-template-columns:1fr 70px 90px auto;gap:6px;align-items:center}.key-row label{display:flex;flex-direction:column;font-size:11px;color:var(--muted)}.key-row input[type=number]{width:100%}.points-canvas{cursor:crosshair}.points-canvas canvas{touch-action:none}.overlay-zoom{position:absolute;right:10px;bottom:10px;background:#00000080;padding:4px 8px;border-radius:8px}.field{display:flex;flex-direction:column;gap:4px}.field-label{font-size:12px;color:var(--muted)}.num-field{display:grid;grid-template-columns:1fr 86px;grid-template-rows:auto auto;column-gap:8px}.num-field .field-label{grid-column:1 / -1}.num-input{display:flex;align-items:center;gap:4px}.num-input input{width:100%;padding:4px 6px!important}.num-input small{color:var(--muted)}.color-field{display:grid;grid-template-columns:34px 1fr 80px;gap:8px;align-items:center}.color-field .field-label{grid-column:1 / -1}.color-field .hex{width:100%;font-family:ui-monospace,monospace}.toggle{flex-direction:row;align-items:center;justify-content:space-between;cursor:pointer}.toggle input{display:none}.switch{width:36px;height:20px;background:var(--line);border-radius:999px;position:relative;transition:background .15s;flex:none}.switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s}.toggle input:checked+.switch{background:var(--accent)}.toggle input:checked+.switch:after{left:18px}.modal-backdrop{position:fixed;inset:0;background:#0009;display:grid;place-items:center;z-index:100;padding:16px}.modal{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;width:100%;max-width:440px;display:flex;flex-direction:column;gap:12px}.modal.wide{max-width:760px}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h2{margin:0}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.providers{display:flex;flex-direction:column;gap:8px}.provider{justify-content:flex-start;padding:12px 16px;font-size:15px}.provider-icon{width:24px;text-align:center;font-weight:700}.provider.steam:hover{border-color:#66c0f4}.provider.discord:hover{border-color:#5865f2}.provider.google:hover{border-color:#ea4335}.toasts{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:200}.toast{background:var(--panel2);border:1px solid var(--line);padding:10px 16px;border-radius:10px;box-shadow:0 10px 30px #0006;max-width:80vw;word-break:break-all}.toast.ok{border-color:var(--accent)}.toast.error{border-color:var(--danger)}.spinner{width:28px;height:28px;margin:40px auto;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.profile-head{display:flex;align-items:center;gap:18px;margin-bottom:24px}.stat-row{display:flex;gap:12px;margin-bottom:18px;flex-wrap:wrap}.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 16px;display:flex;flex-direction:column;min-width:120px}.stat strong{font-size:22px}.stat span{color:var(--muted);font-size:12px}.report{display:grid;grid-template-columns:160px 1fr;gap:14px;overflow:hidden}.report-preview{height:140px}.report-body{padding:12px 12px 12px 0;display:flex;flex-direction:column;gap:6px}.report-list{margin:0;padding-left:18px}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:8px;border-bottom:1px solid var(--line);vertical-align:middle}.table tr.banned td{opacity:.5}.tr-table td:first-child{width:22%;word-break:break-all}.tr-table td:nth-child(2){width:33%}.tr-table textarea{min-height:34px}.tr-table textarea.missing{border-color:var(--warn)}.overlay-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:14px}.overlay-grid .stage{height:340px}@media(max-width:1100px){.editor{grid-template-columns:1fr}.editor-right{position:static;max-height:none}.editor-center .stage{height:380px}.item-page,.hero,.overlay-grid,.pattern-stage{grid-template-columns:1fr}.features{grid-template-columns:1fr 1fr}}@media(max-width:640px){.topbar{padding:8px 12px;gap:10px;flex-wrap:wrap}.mainnav{order:3;flex-basis:100%}.user-name{display:none}.page,.home{padding:16px 16px 40px}.hero h1{font-size:32px}.features,.download-grid{grid-template-columns:1fr}.searchbar input{width:100%}.grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.report{grid-template-columns:1fr}.report-body{padding:0 12px 12px}}.hotkey-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}.hotkey-row{display:grid;grid-template-columns:200px 200px 1fr auto;gap:8px;align-items:center;padding:10px}.hotkey-row.has-error{border-color:var(--danger)}.hotkey-error{grid-column:1 / -1;color:var(--danger)}.keycap{display:flex;gap:4px;align-items:center;justify-content:center;min-height:36px;background:var(--bg2);border:1px dashed var(--line);border-radius:8px;cursor:pointer;color:var(--muted)}.keycap.recording{border-color:var(--accent);color:var(--accent);animation:pulse 1s infinite}kbd{background:var(--panel2);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:1px 7px;font:12px ui-monospace,monospace;color:var(--text)}@keyframes pulse{50%{opacity:.6}}@media(max-width:640px){.hotkey-row{grid-template-columns:1fr auto}.hotkey-row select{grid-column:1 / -1}}
