*, *::before, *::after {
    box-sizing: border-box;
}

html, body {
    margin: 0;
    font-family: system-ui;
    user-select: none; /* Standard syntax */
    -webkit-user-select: none; /* Safari, Chrome, Opera, Android */
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* Internet Explorer, Edge */
}

#reset-btn {
    position: absolute;
    top: 20px;
    right: 20px;
    z-index: 10;
    padding: 2px 4px;
    cursor: pointer;
}

.smooth-transition {
    transition: transform 0.5s cubic-bezier(0.25, 1, 0.5, 1);
}

#viewport {
    width: 100vw;
    height: 100vh;
    overflow: hidden;
    background: #1a1a1a;
    cursor: grab;
    /* cursor: move; */
    touch-action: none;
    position: relative;
}

#grid-container {
    display: grid;
    grid-template-columns: repeat(20, 100px);
    grid-template-rows: repeat(20, 100px);
    gap: 2px;
    transform-origin: 0 0;
    will-change: transform;
    position: absolute;
}

.cell {
    background: #333;
    border: 1px solid #444;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
}

.door {
    cursor: pointer;
}