*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0e0f12;--panel:#16181e;--panel2:#1e2028;--border:#2a2d38;--accent:#f5a623;--accent2:#4a9eff;--red:#ff4d6d;--blue:#4d9eff;--text:#c8cdd8;--text2:#7b8099;--green:#39c77c;--sel:#f5a6231a;--font:"IBM Plex Mono", monospace;--head:"Chakra Petch", sans-serif}html,body{background:var(--bg);width:100%;height:100%;color:var(--text);font-family:var(--font);font-size:12px;overflow:hidden}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}#app{flex-direction:column;height:100vh;display:flex}#toolbar{background:var(--panel);border-bottom:1px solid var(--border);scrollbar-width:none;z-index:10;flex-shrink:0;align-items:center;gap:4px;padding:6px 10px;display:flex;overflow:auto hidden}#main{flex:1;display:flex;overflow:hidden}#sidebar-left{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:200px;display:flex;overflow:hidden}#canvas-area{background:var(--bg);flex:1;position:relative;overflow:hidden}#sidebar-right{background:var(--panel);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;width:240px;display:flex;overflow:hidden}#statusbar{background:var(--panel);border-top:1px solid var(--border);height:22px;color:var(--text2);scrollbar-width:none;white-space:nowrap;flex-shrink:0;align-items:center;gap:20px;padding:0 12px;font-size:11px;display:flex;overflow-x:auto}#toolbar::-webkit-scrollbar{display:none}#statusbar::-webkit-scrollbar{display:none}#github-link{width:18px;height:18px;color:var(--text2);border-radius:4px;justify-content:center;align-items:center;margin-left:auto;transition:color .12s,background .12s;display:inline-flex}#github-link:hover{color:var(--text);background:var(--panel2)}#copyright{font-size:10px}#title-logo{font-family:var(--head);letter-spacing:2px;color:var(--accent);white-space:nowrap;margin-right:8px;font-size:14px;font-weight:700}.t-sep{background:var(--border);flex-shrink:0;width:1px;height:24px;margin:0 4px}.toolbar-spacer{flex:1 0 12px}.t-btn{cursor:pointer;color:var(--text2);font-family:var(--font);white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;gap:4px;padding:4px 8px;font-size:11px;transition:color .15s,background .15s,border-color .15s;display:flex}.t-btn:hover{color:var(--text);background:var(--panel2);border-color:var(--border)}.t-btn.active{color:var(--accent);background:var(--sel);border-color:var(--accent)}.t-btn:disabled,.t-btn[disabled]{opacity:.3;cursor:not-allowed;pointer-events:none}.t-btn svg{flex-shrink:0}#file-input{display:none}#stadium-name-display{font-family:var(--head);color:var(--text2);white-space:nowrap;flex-shrink:0;font-size:12px}@media (width<=1024px){#sidebar-left{width:176px}#sidebar-right{width:220px}.t-btn{padding-inline:6px}}@media (width<=720px){#app{height:100dvh}#main{flex-direction:column;min-height:0}#canvas-area{flex:46vh;order:1;min-height:240px}#sidebar-left,#sidebar-right{border-left:0;border-right:0;border-top:1px solid var(--border);width:100%}#sidebar-left{order:2;height:22vh;min-height:118px}#sidebar-right{order:3;height:26vh;min-height:142px}#toolbar{padding-inline:6px}#copyright{margin-left:0}}@media (width<=960px) and (height<=520px) and (orientation:landscape){#app{height:100dvh}#main{flex-direction:row;min-height:0}#sidebar-left,#sidebar-right{border-top:0;height:auto;min-height:0}#sidebar-left{border-right:1px solid var(--border);order:1;width:clamp(132px,24vw,160px)}#canvas-area{flex:auto;order:2;min-width:180px;min-height:0}#sidebar-right{border-left:1px solid var(--border);order:3;width:clamp(168px,32vw,210px)}.panel-head{padding:6px 8px}#toolbar{padding-block:4px}.t-btn{padding-block:3px}}.panel-head{font-family:var(--head);letter-spacing:1px;color:var(--text2);text-transform:uppercase;border-bottom:1px solid var(--border);flex-shrink:0;padding:8px 10px;font-size:11px;font-weight:600}.panel-scroll{flex:1;overflow-y:auto}.panel-scroll::-webkit-scrollbar{width:4px}.panel-scroll::-webkit-scrollbar-track{background:0 0}.panel-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.obj-group-head{color:var(--text2);letter-spacing:1px;text-transform:uppercase;justify-content:space-between;align-items:center;padding:6px 10px 3px;font-size:10px;display:flex}.obj-group-head .count{background:var(--panel2);border-radius:3px;padding:0 4px}.obj-item{cursor:pointer;border-left:2px solid #0000;align-items:center;gap:6px;padding:4px 10px 4px 18px;transition:background .1s,border-color .1s;display:flex}.obj-item:hover{background:var(--panel2)}.obj-item.selected{background:var(--sel);border-left-color:var(--accent);color:var(--text)}.obj-item.multi-selected{color:var(--text);background:#39c77c14;border-left-color:#39c77c}.obj-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}#props-panel{flex-direction:column;display:flex}#validation-panel{flex-shrink:0;align-items:center;display:inline-flex}#validation-panel:empty{display:none}.validation-dock{position:relative}.validation-dock.has-errors{--validation-color:var(--red)}.validation-dock.has-warnings{--validation-color:var(--accent)}.validation-summary{height:18px;color:var(--text);border:1px solid color-mix(in srgb, var(--validation-color) 58%, var(--border));cursor:pointer;white-space:nowrap;background:#1e2028d9;border-radius:4px;align-items:center;gap:6px;padding:0 7px;list-style:none;display:flex}.validation-summary::-webkit-details-marker{display:none}.validation-summary:hover{background:var(--panel2)}.validation-summary:after{content:"^";color:var(--validation-color);font-size:10px}.validation-dock[open] .validation-summary:after{content:"v"}.validation-summary-title{font-family:var(--head);letter-spacing:.7px;color:var(--validation-color);text-transform:uppercase;font-size:9px;font-weight:600}.validation-summary-count{min-width:0;color:var(--text2);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.validation-list{z-index:120;border:1px solid var(--border);border-left:3px solid var(--validation-color);background:#16181efa;border-radius:6px 6px 0 0;max-width:560px;max-height:220px;padding:6px;display:none;position:fixed;bottom:30px;left:212px;right:252px;overflow-y:auto;box-shadow:0 12px 40px #00000059}.validation-dock[open] .validation-list{display:block}.validation-filters{z-index:1;background:#16181efa;gap:4px;padding:0 0 6px;display:flex;position:sticky;top:-6px}.validation-filter{height:20px;color:var(--text2);border:1px solid var(--border);font-size:10px;font-family:var(--font);cursor:pointer;background:#ffffff08;border-radius:4px;padding:0 7px}.validation-filter:hover{color:var(--text);background:var(--panel2)}.validation-filter.active,.validation-filter[aria-pressed=true]{color:var(--validation-color);background:color-mix(in srgb, var(--validation-color) 14%, transparent);border-color:color-mix(in srgb, var(--validation-color) 62%, var(--border))}.validation-item{appearance:none;width:100%;color:var(--text);box-shadow:none;font-size:10px;font-family:var(--font);text-align:left;background:0 0;border:0;border-radius:0;grid-template-columns:42px minmax(0,1fr);gap:6px;margin:0;padding:6px 7px;line-height:1.35;display:grid}button.validation-item{appearance:none}.validation-item+.validation-item{border-top:1px solid #2a2d38b3}.validation-item.is-actionable{cursor:pointer}.validation-item.is-actionable:hover{background:#ffffff0a}.validation-item.is-actionable:focus-visible{outline:1px solid var(--accent2);outline-offset:-1px}.validation-item-severity{color:var(--red);font-family:var(--head);letter-spacing:.6px;text-transform:uppercase;font-size:9px;font-weight:600}.validation-item.warn .validation-item-severity{color:var(--accent)}.validation-item-message{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.validation-empty{color:var(--text2);text-align:center;padding:14px 8px 10px;font-size:10px;display:block}@media (width<=1024px){.validation-list{left:188px;right:232px}}@media (width<=720px){.validation-list{max-width:none;left:12px;right:12px}}#props-placeholder{color:var(--text2);text-align:center;justify-content:center;align-items:center;padding:24px 16px;font-size:11px;line-height:1.6;display:flex}#props-inner{padding:8px}#props-inner.hidden,#props-placeholder.hidden{display:none}.prop-section{margin-bottom:14px}.prop-section-title{font-family:var(--head);letter-spacing:1px;color:var(--text2);text-transform:uppercase;border-bottom:1px solid var(--border);margin-bottom:6px;padding-bottom:4px;font-size:10px;font-weight:600}.prop-row{align-items:center;gap:6px;margin-bottom:4px;display:flex}.prop-label{color:var(--text2);text-overflow:ellipsis;white-space:nowrap;flex:0 0 76px;font-size:11px;overflow:hidden}.prop-val{flex:1;min-width:0}.prop-input{background:var(--panel2);border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--font);border-radius:3px;outline:none;padding:3px 6px;font-size:11px;transition:border-color .1s}.prop-input:focus{border-color:var(--accent2)}select.prop-input{cursor:pointer}.prop-color-wrap{align-items:center;gap:4px;display:flex}.prop-color-swatch{border:1px solid var(--border);cursor:pointer;border-radius:3px;flex-shrink:0;width:24px;height:22px}.prop-checkbox{accent-color:var(--accent);width:14px;height:14px}.prop-btn{border:1px solid var(--border);cursor:pointer;font-family:var(--font);color:var(--text2);background:var(--panel2);border-radius:3px;width:100%;padding:4px 10px;font-size:11px;transition:border-color .12s,color .12s,background .12s}.prop-btn:hover{border-color:var(--accent);color:var(--accent)}.prop-btn.danger{color:#ff4d6d8c;border-color:#ff4d6d33}.prop-btn.danger:hover{border-color:var(--red);color:var(--red);background:#ff4d6d12}#main-canvas{cursor:crosshair;touch-action:none;display:block}#canvas-overlay{flex-direction:column;gap:4px;display:flex;position:absolute;top:8px;right:8px}.ov-btn{background:var(--panel);border:1px solid var(--border);color:var(--text2);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;transition:border-color .1s,color .1s;display:flex}.ov-btn:hover{border-color:var(--accent);color:var(--accent)}#drop-overlay{pointer-events:none;opacity:0;justify-content:center;align-items:center;transition:opacity .2s;display:flex;position:absolute;inset:0}#drop-overlay.active{opacity:1;pointer-events:all;background:#0e0f1299}.drop-box{border:2px dashed var(--accent);text-align:center;color:var(--accent);font-family:var(--head);border-radius:12px;padding:40px 60px}.drop-box h2{letter-spacing:2px;margin-bottom:8px;font-size:18px}.drop-box p{color:var(--text2);font-size:12px}#toast{background:var(--panel2);border:1px solid var(--accent);color:var(--text);opacity:0;pointer-events:none;z-index:999;border-radius:6px;padding:8px 16px;font-size:12px;transition:opacity .3s,transform .3s;position:fixed;bottom:32px;left:50%;transform:translate(-50%)translateY(16px)}#toast.show{opacity:1;transform:translate(-50%)translateY(0)}.prop-row--flags{align-items:flex-start;padding-top:2px}.prop-flags-wrap{flex-wrap:wrap;gap:4px 6px;padding:2px 0;display:flex}.prop-flag-label{color:var(--text2);cursor:pointer;white-space:nowrap;align-items:center;gap:3px;font-size:10px;transition:color .1s;display:flex}.prop-flag-label:hover{color:var(--text)}.prop-flag-cb{accent-color:var(--accent2);cursor:pointer;width:11px;height:11px}.prop-section-title--action{justify-content:space-between;align-items:center;display:flex}.prop-trait-add{font-family:var(--font);border:1px solid var(--accent2);color:var(--accent2);cursor:pointer;background:0 0;border-radius:3px;padding:1px 7px;font-size:10px;transition:background .1s}.prop-trait-add:hover{background:#4a9eff1f}.prop-trait-empty{color:var(--text2);padding:4px 0 6px;font-size:11px;font-style:italic}.prop-trait-block{border:1px solid var(--border);border-radius:4px;margin-bottom:6px;overflow:hidden}.prop-trait-header{background:var(--panel2);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:4px 8px;display:flex}.prop-trait-name{font-family:var(--head);color:var(--accent);letter-spacing:.5px;font-size:11px;font-weight:600}.prop-trait-del{color:var(--text2);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:10px;line-height:1;transition:color .1s}.prop-trait-del:hover{color:var(--red)}.prop-trait-block .prop-row{border-bottom:1px solid #2a2d3880;padding:3px 8px}.prop-trait-block .prop-row:last-of-type{border-bottom:none}.prop-trait-unset{font-family:var(--font);border:1px solid var(--border);color:var(--text2);cursor:pointer;background:0 0;border-radius:3px;padding:1px 5px;font-size:9px}.prop-trait-unset:hover{border-color:var(--accent);color:var(--accent)}.prop-trait-usage{color:var(--text2);border-top:1px solid var(--border);padding:3px 8px 5px;font-size:10px;font-style:italic}#preview-overlay{z-index:500;background:#000;flex-direction:column;display:none;position:fixed;inset:0}#preview-overlay.active{display:flex}#preview-canvas{touch-action:none;flex:1;width:100%;height:100%;display:block}#preview-hud{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-bottom:1px solid var(--border);background:#0e0f12bf;justify-content:space-between;align-items:center;height:40px;padding:0 12px;display:flex;position:absolute;top:0;left:0;right:0}#preview-title{font-family:var(--head);letter-spacing:2px;color:var(--accent);text-transform:uppercase;font-size:12px;font-weight:600}#preview-controls{gap:4px;display:flex}#ctx-menu{background:var(--panel2);border:1px solid var(--border);z-index:200;border-radius:6px;min-width:160px;padding:4px;display:none;position:fixed;box-shadow:0 8px 24px #00000080}.ctx-item{cursor:pointer;color:var(--text);border-radius:4px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;transition:background .1s,color .1s;display:flex}.ctx-item:hover{background:var(--sel);color:var(--accent)}.ctx-item.danger{color:#ff4d6d8c}.ctx-item.danger:hover{color:var(--red);background:#ff4d6d12}.ctx-sep{background:var(--border);height:1px;margin:3px 0}.obj-item{position:relative}.obj-item .vis-btn{cursor:pointer;color:var(--text2);opacity:.7;background:0 0;border:none;padding:0 2px;font-size:12px;line-height:1;transition:opacity .1s;display:none;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.obj-item:hover .vis-btn,.obj-item.selected .vis-btn{display:block}.obj-item .vis-btn:hover{opacity:1;color:var(--accent)}.obj-item.seg-invisible{opacity:.45}.modal-overlay{z-index:800;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0e0f12bf;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.active{display:flex}.modal-box{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;width:680px;max-width:95vw;max-height:85vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0009}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-title{font-family:var(--head);letter-spacing:2px;color:var(--accent);text-transform:uppercase;font-size:14px;font-weight:700}.modal-close{color:var(--text2);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:14px;transition:color .1s}.modal-close:hover{color:var(--red)}.modal-body{padding:18px;overflow-y:auto}.shortcut-grid{grid-template-columns:repeat(3,1fr);gap:0 24px;display:grid}.sc-group-title{font-family:var(--head);letter-spacing:1px;text-transform:uppercase;color:var(--text2);border-bottom:1px solid var(--border);margin-bottom:6px;padding-bottom:6px;font-size:10px;font-weight:600}.sc-row{color:var(--text2);align-items:center;gap:4px;padding:3px 0;font-size:11px;display:flex}.sc-row span{color:var(--text);margin-left:4px}kbd{background:var(--panel2);border:1px solid var(--border);font-family:var(--font);color:var(--text);white-space:nowrap;border-radius:3px;padding:1px 5px;font-size:10px}.template-card{border:1px solid var(--border);cursor:pointer;background:var(--panel2);border-radius:6px;padding:10px 12px;transition:border-color .12s,background .12s}.template-card:hover{border-color:var(--accent2);background:#4a9eff12}.template-card.active{border-color:var(--accent);background:var(--sel)}.template-card-name{font-family:var(--head);color:var(--text);margin-bottom:3px;font-size:12px;font-weight:600}.template-card-desc{color:var(--text2);font-size:10px;line-height:1.4}
