* { margin: 0; padding: 0; box-sizing: border-box; } html, body { width: 100vw; height: 100vh; overflow: hidden; } body { background: #f7f7f7; display: flex; align-items: center; justify-content: center; font-family: 'Arial', sans-serif; user-select: none; } main { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20px; border-radius: 10px; min-width: fit-content; flex-shrink: 0; gap: 16px; } .game-layout { width: min(95vw, 1000px); } .toolbox { width: 100%; background: #dfe5f8; border-radius: 10px; padding: 14px; display: flex; flex-direction: column; gap: 10px; } .toolbox h2 { font-size: 1rem; } .toolbox p { font-size: 0.9rem; color: #334; } .glass-palette { display: flex; gap: 10px; flex-wrap: wrap; } /* ================================ GRID ================================ */ .map { display: flex; flex-direction: column; gap: 0px; padding: 10px; background: #DADEEF; border-radius: 5px; } .lign { display: flex; gap: 0px; margin: 0; } /* ================================ CELLS ================================ */ .cell { width: clamp(28px, 5.5vmin, 60px); height: clamp(28px, 5.5vmin, 60px); transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; margin: 0; position: relative; background-color: #2a2a2a; user-select: none; overflow: hidden; } .cell.can-drop { outline: 2px dashed rgba(0, 0, 0, 0.2); } /* ================================ CASES TYPE ================================ */ .empty { background-color: #DADEEF; } .empty:hover { background-color: #333333; } .laser { background-color: #f5f5f5; border: 2px solid #d8d8d8; } .colored-laser { background-color: #ffa726; } .mirror { background-color: #DADEEF; border-color: #444444; position: relative; overflow: hidden; } .wall { background-color: #0729c0; } .door { background-color: #6d4c41; } .door-open { background-color: #bca89c; } .button { background-color: #7cb342; } .button-2 { background-color: #ff8f00; } .button-active { background-color: #c6ff00; } .target { background: #00FF00; } /* ================================ LIGHT LASER ================================ */ .light-laser { position: relative; } .laser-overlay { position: absolute; inset: 0; pointer-events: none; z-index: 2; } .laser-horizontal { --laser-color: red; background: linear-gradient(to bottom, transparent 0%, transparent 45%, var(--laser-color) 45%, var(--laser-color) 55%, transparent 55%, transparent 100%); } .laser-vertical { --laser-color: red; background: linear-gradient(to right, transparent 0%, transparent 45%, var(--laser-color) 45%, var(--laser-color) 55%, transparent 55%, transparent 100%); } .laser-diagonal-down { --laser-color: red; background: linear-gradient(45deg, transparent 0%, transparent 46%, var(--laser-color) 46%, var(--laser-color) 54%, transparent 54%, transparent 100%); } .laser-diagonal-up { --laser-color: red; background: linear-gradient(135deg, transparent 0%, transparent 46%, var(--laser-color) 46%, var(--laser-color) 54%, transparent 54%, transparent 100%); } .laser-color-white { --laser-color: #f8f8f8; } .laser-color-red { --laser-color: #ff3b30; } .laser-color-blue { --laser-color: #2d7ff9; } .laser-color-yellow { --laser-color: #ffd400; } /* ================================ MIRROR ================================ */ .btn-mirror { background: none; border: none; cursor: pointer; height: 100%; position: relative; z-index: 3; } .btn-mirror::after { content: ''; position: absolute; top: 50%; left: 10%; width: 80%; height: 2px; background-color: #aaaaaa; transform-origin: center; } .glass-item { width: 54px; height: 54px; border: none; border-radius: 10px; cursor: grab; position: relative; box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.1); user-select: none; } .glass-item::after, .cell-glass::after { content: ''; position: absolute; inset: 10px; border-radius: 8px; background: rgba(255, 255, 255, 0.45); border: 1px solid rgba(255, 255, 255, 0.8); } .glass-red { background: rgba(255, 59, 48, 0.85); } .glass-blue { background: rgba(45, 127, 249, 0.85); } .glass-yellow { background: rgba(255, 212, 0, 0.9); } .cell-glass { position: absolute; inset: 5px; border-radius: 8px; opacity: 0.9; pointer-events: none; z-index: 4; } /* ================================ RESPONSIVE ================================ */ @media (max-width: 600px) { .map { padding: 5px; border-radius: 3px; } main { padding: 8px; } } @media (max-height: 500px) { .map { padding: 4px; } }