.page { display: grid; grid-template-columns: 260px 1fr; height: 100vh; width: 100vw; overflow: hidden; background: var(--bg, #12141a); color: var(--text, #e8eaef); } .sidebar { border-right: 1px solid var(--stroke, #2a2f3a); padding: 12px; overflow: auto; display: flex; flex-direction: column; gap: 10px; } .sideTitle { font-weight: 800; font-size: 13px; letter-spacing: 0.04em; text-transform: uppercase; opacity: 0.85; } .accordion { border: 1px solid var(--stroke, #2a2f3a); border-radius: 10px; overflow: hidden; background: rgba(255, 255, 255, 0.02); } .accordionHead { width: 100%; text-align: left; padding: 10px 12px; font-weight: 700; background: transparent; border: 0; color: inherit; cursor: pointer; } .palette { display: grid; gap: 6px; padding: 8px; } .gridPanel { display: grid; gap: 10px; padding: 10px 12px 12px; } .checkRow { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; cursor: pointer; user-select: none; } .field { display: grid; gap: 6px; } .fieldDisabled { opacity: 0.45; pointer-events: none; } .fieldLabel { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font-size: 12px; font-weight: 600; opacity: 0.9; } .fieldValue { font-variant-numeric: tabular-nums; opacity: 0.75; } .select { width: 100%; box-sizing: border-box; padding: 7px 28px 7px 10px; border-radius: 8px; border: 1px solid var(--stroke, #2a2f3a); background-color: rgba(0, 0, 0, 0.25); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M2.5 4.25L6 7.75L9.5 4.25' stroke='rgba(255,255,255,0.72)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 8px center; background-size: 12px 12px; color: inherit; font: inherit; appearance: none; } .range { width: 100%; accent-color: #f5c542; } .colorInput { width: 100%; height: 34px; padding: 0; border: 1px solid var(--stroke, #2a2f3a); border-radius: 8px; background: transparent; cursor: pointer; overflow: hidden; } .colorInput:disabled { cursor: default; } .colorInput::-webkit-color-swatch-wrapper { padding: 0; border-radius: inherit; } .colorInput::-webkit-color-swatch { border: none; border-radius: inherit; } .colorInput::-moz-color-swatch { border: none; border-radius: inherit; } .paletteItem { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px; border: 1px solid var(--stroke, #2a2f3a); background: rgba(0, 0, 0, 0.2); color: inherit; cursor: grab; user-select: none; } .paletteItem:active { cursor: grabbing; } .paletteLabel { font-size: 13px; font-weight: 600; } .hint { font-size: 12px; opacity: 0.65; line-height: 1.35; } .stage { position: relative; min-width: 0; min-height: 0; background: #0a0b0e; } .viewport { position: absolute; inset: 0; overflow: hidden; cursor: default; } .world { position: absolute; left: 0; top: 0; transform-origin: 0 0; will-change: transform; } .mapImg { display: block; max-width: none; user-select: none; pointer-events: none; } .trap { position: absolute; z-index: 1; transform: translate(-50%, -50%); border-radius: 50%; border: 2px solid rgba(255, 255, 255, 0.55); background: rgba(0, 0, 0, 0.45); display: grid; place-items: center; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4); cursor: move; touch-action: none; } .trapSelected { border-color: #f5c542; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4), 0 0 0 3px rgba(245, 197, 66, 0.35); } .trapLabel { position: absolute; left: 50%; top: calc(100% + 4px); transform: translateX(-50%); font-size: 11px; white-space: nowrap; background: rgba(0, 0, 0, 0.7); padding: 2px 6px; border-radius: 4px; } .handle { position: absolute; right: -5px; bottom: -5px; width: 12px; height: 12px; border-radius: 2px; background: #f5c542; border: 1px solid #000; cursor: nwse-resize; touch-action: none; } .empty { position: absolute; inset: 0; display: grid; place-items: center; opacity: 0.7; } .toolbar { display: flex; gap: 8px; flex-wrap: wrap; } .toolbar button { font-size: 12px; }