*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
}

body {
    background: #0a0300;
    overflow: hidden;
    height: 100vh;
    height: 100svh;
    user-select: none;
    -webkit-user-select: none;
}

/* ── Canvas ──────────────────────────────────── */
#canvas {
    display: block;
    width: 100vw;
    height: 100vh;
    height: 100svh;
    touch-action: none;
}

/* ── Vinheta ─────────────────────────────────── */
.vignette {
    position: fixed;
    inset: 0;
    background: radial-gradient(ellipse at center, transparent 35%, rgba(0,0,0,0.75) 100%);
    pointer-events: none;
    z-index: 1;
}

/* ══════════════════════════════════════════════
   Pontos de interação
══════════════════════════════════════════════ */
.dot-grid {
    position: fixed;
    bottom: calc(28px + env(safe-area-inset-bottom));
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 22px;
    z-index: 10;
}

.dot-group {
    display: flex;
    gap: 11px;
    align-items: center;
}

/* Ponto base */
.dot {
    width: 15px;
    height: 15px;
    border-radius: 50%;
    border: 2px solid;
    cursor: pointer;
    padding: 0;
    background: transparent;
    transition: background 0.28s, box-shadow 0.28s, transform 0.12s, opacity 0.28s;
}

.dot:active { transform: scale(0.88); }

/* Lado escuro */
.dot.dark            { border-color: #666; opacity: 0.5; }
.dot.dark.active     { background: #777; border-color: #999; opacity: 1;
                       box-shadow: 0 0 8px rgba(120,120,120,0.4); }

/* Lado quente */
.dot.warm            { border-color: #9A6000; opacity: 0.5; }
.dot.warm.active     { background: #C88000; border-color: #E8A000; opacity: 1;
                       box-shadow: 0 0 10px rgba(200,128,0,0.5); }

/* Chefe — ligeiramente maior e mais brilhante */
.dot.boss {
    width: 20px;
    height: 20px;
    border-color: #B89000;
    opacity: 0.5;
}
.dot.boss.active {
    background: #FFD040;
    border-color: #FFE870;
    opacity: 1;
    box-shadow: 0 0 14px rgba(255,208,64,0.7);
}

/* ── Dica única ──────────────────────────────── */
#hint-once {
    position: fixed;
    bottom: calc(68px + env(safe-area-inset-bottom));
    left: 50%;
    transform: translateX(-50%);
    font-family: 'Georgia', serif;
    font-size: 10px;
    letter-spacing: 1.5px;
    color: #4A3820;
    text-align: center;
    white-space: nowrap;
    z-index: 10;
    pointer-events: none;
    animation: fadeHint 5s ease forwards;
}

@keyframes fadeHint {
    0%   { opacity: 0; }
    15%  { opacity: 1; }
    70%  { opacity: 1; }
    100% { opacity: 0; }
}

/* ── Mobile ajustes finos ────────────────────── */
@media (max-width: 480px) {
    .dot      { width: 18px; height: 18px; }
    .dot.boss { width: 24px; height: 24px; }
    .dot-group { gap: 13px; }
    .dot-grid  { gap: 18px; bottom: calc(32px + env(safe-area-inset-bottom)); }
    #dot-symbol { font-size: 22px; }
}
