/* Revamed Mansion — PHIRO fail-closed interaction hardening. */

/* Author CSS must never resurrect hidden overlays/scenes. */
[hidden] {
    display: none !important;
}

html,
body {
    max-width: 100%;
    overflow-x: hidden;
}

button,
[role="button"],
.hotspot,
.library-hotspot,
.library-book {
    touch-action: manipulation;
    -webkit-tap-highlight-color: rgba(229, 182, 93, 0.2);
}

.hotspot,
.library-hotspot,
.library-book {
    -webkit-user-select: none;
    user-select: none;
}

button:focus-visible,
[role="button"]:focus-visible,
.hotspot:focus-visible,
.library-hotspot:focus-visible,
.library-book:focus-visible {
    outline: 3px solid #fff0bd;
    outline-offset: 2px;
}

button:disabled,
[aria-disabled="true"] {
    cursor: not-allowed;
    pointer-events: none;
    opacity: 0.58;
}

.game-screen,
.scene,
.command-console {
    min-width: 0;
}

.scene {
    isolation: isolate;
}

/* Prevent modal layers that are visually closed from stealing taps. */
#onboarding-modal:not(.visible),
.dialogue-overlay:not(.visible),
.clue-journal-panel:not(.visible),
.settings-panel:not(.visible) {
    pointer-events: none;
}

#onboarding-modal.visible,
.dialogue-overlay.visible,
.clue-journal-panel.visible,
.settings-panel.visible {
    pointer-events: auto;
}

/* Dynamic hotspots are real controls on phones, not invisible text-selection zones. */
@media (pointer: coarse), (max-width: 760px) {
    button,
    [role="button"] {
        min-height: 44px;
    }

    .hotspot,
    .library-hotspot,
    .library-book {
        min-width: 44px;
        min-height: 44px;
    }

    .command-console,
    .game-header,
    .game-footer,
    .clear-instruction-strip {
        box-sizing: border-box;
        max-width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
    }
}
