* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    padding: 0;
}

html {
    font-size: 16px;
}

body {
    min-height: 100vh;

    font-family:
        "Montserrat",
        Arial,
        sans-serif;

    color: #f8fafc;

    font-size: 14px;
    line-height: 1.5;

    background:
        radial-gradient(
            circle at top left,
            #312e81 0%,
            transparent 35%
        ),
        radial-gradient(
            circle at top right,
            #581c87 0%,
            transparent 30%
        ),
        linear-gradient(
            160deg,
            #070b1d,
            #0d1330,
            #111936
        );

    background-attachment: fixed;
}

button,
input,
select,
textarea {
    font-family: inherit;
    font-size: 14px;
}

button {
    touch-action: manipulation;
}

.page-glow {
    position: fixed;

    width: 430px;
    height: 430px;

    filter: blur(130px);

    border-radius: 50%;

    opacity: 0.14;

    pointer-events: none;
}

.glow-one {
    left: -180px;
    top: 130px;
    background: #f59e0b;
}

.glow-two {
    right: -180px;
    top: 360px;
    background: #7c3aed;
}


/* ======================================
   HEADER
====================================== */

.app-header {
    position: relative;
    z-index: 10;

    min-height: 92px;

    display: flex;
    justify-content: space-between;
    align-items: center;

    padding: 14px 30px;

    background:
        rgba(
            7,
            11,
            29,
            0.9
        );

    border-bottom:
        1px solid
        rgba(
            255,
            255,
            255,
            0.08
        );
}

.brand-area {
    display: flex;
    align-items: center;
    gap: 17px;
}

.app-header h1 {
    margin: 0;

    font-size: 30px;
    line-height: 1.15;
}

.app-header p {
    margin: 5px 0 0;

    color: #b8c4ff;

    font-size: 13px;
}

.header-actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

.header-badge {
    display: flex;
    gap: 8px;
    align-items: center;

    padding: 9px 13px;

    border:
        1px solid
        rgba(
            245,
            158,
            11,
            0.3
        );

    border-radius: 20px;

    color: #fbbf24;

    font-size: 12px;
    font-weight: 800;
}

.header-badge span,
.live-dot {
    width: 8px;
    height: 8px;

    border-radius: 50%;

    background: #22c55e;

    box-shadow:
        0 0 8px
        #22c55e;
}


/* FIREWORK HEADER */

.header-firework {
    position: relative;

    width: 60px;
    height: 60px;

    animation:
        fireworkHeader
        2.4s
        infinite;
}

.fw-core {
    position: absolute;

    left: 50%;
    top: 50%;

    width: 8px;
    height: 8px;

    border-radius: 50%;

    transform:
        translate(
            -50%,
            -50%
        );

    background: white;

    box-shadow:
        0 0 8px white,
        0 0 16px orange;
}

.header-firework i {
    position: absolute;

    left: 50%;
    top: 50%;

    width: 3px;
    height: 25px;

    transform-origin: top;

    background:
        linear-gradient(
            transparent,
            #f97316,
            #fbbf24,
            white
        );
}

.header-firework i:nth-of-type(1) {
    transform: rotate(0deg);
}

.header-firework i:nth-of-type(2) {
    transform: rotate(30deg);
}

.header-firework i:nth-of-type(3) {
    transform: rotate(60deg);
}

.header-firework i:nth-of-type(4) {
    transform: rotate(90deg);
}

.header-firework i:nth-of-type(5) {
    transform: rotate(120deg);
}

.header-firework i:nth-of-type(6) {
    transform: rotate(150deg);
}

.header-firework i:nth-of-type(7) {
    transform: rotate(180deg);
}

.header-firework i:nth-of-type(8) {
    transform: rotate(210deg);
}

.header-firework i:nth-of-type(9) {
    transform: rotate(240deg);
}

.header-firework i:nth-of-type(10) {
    transform: rotate(270deg);
}

.header-firework i:nth-of-type(11) {
    transform: rotate(300deg);
}

.header-firework i:nth-of-type(12) {
    transform: rotate(330deg);
}

@keyframes fireworkHeader {

    0% {
        opacity: 0.25;
        transform: scale(0.55);
    }

    50% {
        opacity: 1;
        transform: scale(1.05);
    }

    100% {
        opacity: 0.25;
        transform: scale(0.55);
    }
}


/* ======================================
   ACCOUNT BUTTON
====================================== */

.auth-header-button {
    min-height: 38px;

    padding: 8px 14px;

    border:
        1px solid
        rgba(
            96,
            165,
            250,
            0.30
        );

    border-radius: 20px;

    background:
        rgba(
            59,
            130,
            246,
            0.10
        );

    color: #dbeafe;

    font-size: 12px;
    font-weight: 700;

    cursor: pointer;

    transition:
        background 0.2s,
        border-color 0.2s;
}

.auth-header-button:hover {
    background:
        rgba(
            59,
            130,
            246,
            0.20
        );

    border-color:
        rgba(
            96,
            165,
            250,
            0.55
        );
}

.auth-header-button.logged-in {
    border-color:
        rgba(
            34,
            197,
            94,
            0.40
        );

    background:
        rgba(
            34,
            197,
            94,
            0.12
        );

    color: #bbf7d0;
}


/* ======================================
   GENERAL
====================================== */

.content {
    position: relative;
    z-index: 2;

    width:
        min(
            1500px,
            calc(
                100% - 30px
            )
        );

    margin: auto;

    padding:
        28px
        0
        40px;
}

.section-kicker,
.eyebrow {
    color: #fbbf24;

    font-size: 12px;
    font-weight: 800;

    letter-spacing: 1.4px;
}


/* ======================================
   HERO
====================================== */

.hero {
    display: grid;

    grid-template-columns:
        1.25fr
        0.75fr;

    gap: 22px;

    margin-bottom: 24px;
}

.hero-copy,
.weather-panel {
    padding: 25px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.08
        );

    border-radius: 20px;

    background:
        linear-gradient(
            135deg,
            rgba(
                30,
                41,
                92,
                0.76
            ),
            rgba(
                44,
                20,
                85,
                0.62
            )
        );
}

.hero h2 {
    max-width: 720px;

    margin:
        10px
        0
        12px;

    font-size:
        clamp(
            34px,
            4.5vw,
            56px
        );

    line-height: 1.05;
}

.hero h2 span {
    color: #fbbf24;
}

.hero p {
    color: #d2d9e8;

    font-size: 15px;
    line-height: 1.65;
}


/* ======================================
   WEATHER
====================================== */

.weather-heading {
    display: flex;
    justify-content: space-between;
}

.weather-heading h3 {
    margin: 6px 0 0;
    font-size: 18px;
}

.weather-live {
    color: #86efac;

    font-size: 11px;
    font-weight: 800;
}

.weather-current {
    display: flex;
    align-items: center;

    gap: 13px;

    margin-top: 15px;

    padding: 14px;

    border-radius: 13px;

    background:
        rgba(
            255,
            255,
            255,
            0.05
        );
}

.weather-temp {
    font-size: 38px;
    font-weight: 800;
}

.weather-now-icon {
    font-size: 34px;
}

.weather-now-main {
    display: flex;
    align-items: center;
    gap: 10px;
}

.weather-now-main strong {
    font-size: 14px;
}

.weather-now-main span {
    display: block;

    color: #b3bfd3;

    font-size: 12px;
}

.weather-meta {
    margin-left: auto;

    color: #b3bfd3;

    font-size: 11px;
    line-height: 1.55;
}

.weather-forecast {
    display: grid;

    grid-template-columns:
        repeat(
            5,
            1fr
        );

    gap: 7px;

    margin-top: 10px;
}

.forecast-day {
    padding:
        8px
        4px;

    border-radius: 8px;

    text-align: center;

    background:
        rgba(
            255,
            255,
            255,
            0.04
        );

    font-size: 11px;
}


/* ======================================
   MAIN WORKSPACE
====================================== */

.workspace {
    display: grid;

    grid-template-columns:
        410px
        minmax(
            0,
            1fr
        );

    gap: 23px;
}

.side-panel,
.map-panel,
.events-section {
    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.08
        );

    border-radius: 20px;

    background:
        rgba(
            18,
            25,
            58,
            0.82
        );
}

.side-panel {
    padding: 23px;
}

.side-panel h2 {
    margin: 7px 0;

    font-size: 22px;
}

.panel-description {
    color: #c0c9dc;

    font-size: 13px;
    line-height: 1.6;
}

.panel-idle {
    display: grid;

    gap: 11px;

    margin-top: 20px;
}

.idle-feature {
    display: flex;

    gap: 11px;

    padding: 12px;

    border-radius: 11px;

    background:
        rgba(
            255,
            255,
            255,
            0.035
        );
}

.idle-icon {
    font-size: 22px;
}

.idle-feature strong {
    font-size: 13px;
}

.idle-feature p {
    margin: 4px 0 0;

    color: #a8b5cf;

    font-size: 12px;
    line-height: 1.5;
}

.pet-paw,
.pet-toggle-paw {
    filter:
        brightness(1.9)
        drop-shadow(
            0
            0
            6px
            rgba(
                34,
                197,
                94,
                0.75
            )
        );
}

.pet-idle {
    border:
        1px solid
        rgba(
            34,
            197,
            94,
            0.12
        );
}


/* ======================================
   BUTTONS
====================================== */

.main-button {
    padding: 12px 17px;

    border: 0;

    border-radius: 9px;

    color: #111827;

    font-size: 13px;
    font-weight: 800;

    cursor: pointer;

    background:
        linear-gradient(
            135deg,
            #fbbf24,
            #f97316
        );
}

.main-button:hover {
    filter: brightness(1.06);
}

.secondary-button {
    padding: 9px 11px;

    border:
        1px solid
        rgba(
            96,
            165,
            250,
            0.28
        );

    border-radius: 8px;

    background:
        rgba(
            59,
            130,
            246,
            0.12
        );

    color: #a9d0ff;

    cursor: pointer;

    font-size: 12px;
    font-weight: 700;
}

.add-display-bottom {
    width: 100%;

    margin-top: 12px;

    padding: 11px;

    border-style: dashed;
}


/* ======================================
   EVENT FORM
====================================== */

.form-divider {
    height: 1px;

    margin: 20px 0;

    background:
        rgba(
            255,
            255,
            255,
            0.1
        );
}

.event-form label {
    display: block;

    margin:
        14px
        0
        6px;

    font-size: 12px;
    font-weight: 700;
}

.event-form input,
.event-form select,
.event-form textarea {
    width: 100%;

    min-height: 42px;

    padding: 10px 11px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.12
        );

    border-radius: 9px;

    background: #202846;

    color: white;

    font-size: 13px;

    outline: none;
}

.event-form select option {
    background: #202846;
    color: white;
}

.event-form input:focus,
.event-form select:focus,
.event-form textarea:focus {
    border-color: #fbbf24;
}

.event-form textarea {
    resize: vertical;
}

.display-section {
    margin-top: 22px;

    padding-top: 18px;

    border-top:
        1px solid
        rgba(
            255,
            255,
            255,
            0.10
        );
}

.display-section-heading {
    display: flex;

    justify-content:
        space-between;

    align-items: center;
}

.display-section-heading h3 {
    margin: 4px 0 0;

    font-size: 18px;
}

.display-help {
    color: #a6b2ca;

    font-size: 12px;
    line-height: 1.55;
}

.display-phase {
    position: relative;

    margin-top: 13px;

    padding: 13px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.08
        );

    border-radius: 12px;

    background:
        rgba(
            3,
            8,
            28,
            0.30
        );
}

.phase-number {
    color: #fbbf24;

    font-size: 12px;
    font-weight: 800;
}

.remove-phase-btn {
    position: absolute;

    right: 10px;
    top: 9px;

    border: 0;

    background: none;

    color: #fca5a5;

    cursor: pointer;

    font-size: 12px;
}

.phase-time-grid {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 8px;
}

.phase-time-box {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 6px;
}

.phase-intensity-section {
    margin-top: 12px;
}

.phase-intensity-bar {
    display: grid;

    grid-template-columns:
        repeat(
            5,
            1fr
        );

    gap: 4px;

    margin-top: 8px;
}

.phase-intensity-button {
    height: 18px;

    border: 0;

    border-radius: 5px;

    opacity: 0.22;

    cursor: pointer;
}

.phase-intensity-button.active {
    opacity: 1;
}

.phase-intensity-button:nth-child(1) {
    background: #22c55e;
}

.phase-intensity-button:nth-child(2) {
    background: #a3c91c;
}

.phase-intensity-button:nth-child(3) {
    background: #f59e0b;
}

.phase-intensity-button:nth-child(4) {
    background: #ef4444;
}

.phase-intensity-button:nth-child(5) {
    background: #a855f7;
}

.phase-warning {
    margin-top: 9px;

    padding: 9px;

    border-radius: 7px;

    background:
        rgba(
            34,
            197,
            94,
            0.07
        );

    color: #c7f9d6;

    font-size: 11px;
    line-height: 1.5;
}

.map-location-instruction {
    margin-top: 17px;

    padding: 13px;

    border-radius: 11px;

    background:
        rgba(
            59,
            130,
            246,
            0.08
        );
}

.map-location-instruction strong {
    font-size: 13px;
}

.map-location-instruction p {
    color: #b5c1d7;

    font-size: 12px;
    line-height: 1.5;
}

.location-status {
    color:
        #fbbf24
        !important;

    font-weight: 700;
}

.submit-button {
    width: 100%;

    margin-top: 16px;
}


/* ======================================
   MAP
====================================== */

.map-panel {
    padding: 17px;
}

.map-heading {
    display: flex;

    justify-content:
        space-between;

    align-items: center;

    gap: 15px;

    margin-bottom: 13px;
}

.map-heading h2 {
    margin: 5px 0 0;

    font-size: 22px;
}

.map-heading p {
    margin: 3px 0;

    color: #a8b5cc;

    font-size: 12px;
}

.map-controls-top {
    display: flex;

    align-items: center;

    gap: 8px;

    flex-wrap: wrap;
}

.map-status {
    display: flex;

    align-items: center;

    gap: 5px;

    color: #9df4bc;

    font-size: 11px;
}

.location-button,
.pet-toggle {
    min-height: 38px;

    padding: 8px 11px;

    border-radius: 18px;

    font-size: 11px;
    font-weight: 700;

    cursor: pointer;
}

.location-button {
    border:
        1px solid
        rgba(
            96,
            165,
            250,
            0.30
        );

    background:
        rgba(
            59,
            130,
            246,
            0.10
        );

    color: #cbe2ff;
}

.location-button.active {
    color: white;

    background:
        rgba(
            59,
            130,
            246,
            0.24
        );

    border-color:
        rgba(
            96,
            165,
            250,
            0.55
        );
}

.pet-toggle {
    display: flex;

    align-items: center;

    gap: 7px;

    border:
        1px solid
        rgba(
            34,
            197,
            94,
            0.25
        );

    background:
        rgba(
            34,
            197,
            94,
            0.08
        );

    color: #c9f7d9;
}

.pet-toggle.active {
    background:
        rgba(
            34,
            197,
            94,
            0.20
        );

    box-shadow:
        0
        0
        14px
        rgba(
            34,
            197,
            94,
            0.16
        );
}

.toggle-state {
    padding: 3px 6px;

    border-radius: 7px;

    background:
        rgba(
            255,
            255,
            255,
            0.08
        );

    color: #b2bed2;

    font-size: 10px;
}

.pet-toggle.active
.toggle-state {
    color: #9df4bc;
}

.map-frame {
    position: relative;

    padding: 4px;

    border-radius: 15px;

    background:
        linear-gradient(
            135deg,
            #fbbf24,
            #7c3aed
        );
}

#map {
    height: 650px;

    border-radius: 11px;

    overflow: hidden;
}


/* ======================================
   NOISE LEGEND
====================================== */

.noise-legend {
    position: absolute;

    z-index: 900;

    top: 15px;
    right: 15px;

    width: 215px;

    padding: 14px;

    border-radius: 11px;

    background:
        rgba(
            5,
            10,
            30,
            0.95
        );

    font-size: 11px;
    line-height: 1.4;

    box-shadow:
        0
        10px
        30px
        rgba(
            0,
            0,
            0,
            0.35
        );
}

.noise-legend.hidden {
    display: none;
}

.noise-legend strong {
    display: block;

    margin-bottom: 10px;

    color: #c7f9d6;

    font-size: 12px;
}

.noise-legend div {
    display: flex;

    align-items: center;

    gap: 8px;

    margin: 6px 0;
}

.legend-line {
    width: 30px;
    height: 6px;

    border-radius: 5px;
}

.legend-line.extreme {
    background: #a855f7;
}

.legend-line.very-loud {
    background: #ef4444;
}

.legend-line.loud {
    background: #f59e0b;
}

.legend-line.moderate {
    background: #a3c91c;
}

.legend-line.lower {
    background: #22c55e;
}

.legend-divider {
    height: 1px;

    margin:
        9px
        0
        !important;

    background:
        rgba(
            255,
            255,
            255,
            0.10
        );
}

.quiet-border-sample {
    width: 25px;
    height: 18px;

    border:
        2px dashed
        #22c55e;

    border-radius: 50%;
}

.noise-info {
    margin-top: 10px;

    padding: 10px 12px;

    border:
        1px solid
        rgba(
            34,
            197,
            94,
            0.13
        );

    border-radius: 9px;

    color: #c3cce0;

    font-size: 11px;
    line-height: 1.55;
}


/* ======================================
   NEAR ME
====================================== */

.near-me-panel {
    margin-top: 13px;

    padding: 15px;

    border:
        1px solid
        rgba(
            96,
            165,
            250,
            0.15
        );

    border-radius: 13px;

    background:
        rgba(
            5,
            10,
            30,
            0.22
        );
}

.near-me-heading {
    display: flex;

    justify-content:
        space-between;

    align-items: center;

    gap: 10px;
}

.near-me-heading h3 {
    margin: 4px 0 0;

    font-size: 18px;
}

.location-status-badge {
    padding: 6px 9px;

    border-radius: 12px;

    background:
        rgba(
            148,
            163,
            184,
            0.08
        );

    color: #b2bed2;

    font-size: 11px;
    font-weight: 700;
}

.location-status-badge.active {
    background:
        rgba(
            59,
            130,
            246,
            0.12
        );

    color: #a9d0ff;
}

.near-me-list {
    display: grid;

    gap: 9px;

    margin-top: 12px;
}

.near-me-empty {
    padding: 14px;

    border-radius: 9px;

    background:
        rgba(
            255,
            255,
            255,
            0.025
        );

    color: #b1bdd1;

    font-size: 12px;
    line-height: 1.6;
}

.near-me-item {
    display: grid;

    grid-template-columns:
        1fr
        auto;

    gap: 10px;

    align-items: center;

    padding: 11px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.06
        );

    border-radius: 9px;

    background:
        rgba(
            255,
            255,
            255,
            0.03
        );
}

.near-me-item strong {
    display: block;

    font-size: 13px;
}

.near-me-meta {
    margin-top: 4px;

    color: #b8c4ff;

    font-size: 11px;
    line-height: 1.55;
}

.near-me-risk {
    display: inline-block;

    margin-top: 6px;

    padding: 5px 8px;

    border-radius: 10px;

    font-size: 11px;
    font-weight: 800;
}

.risk-extreme {
    background:
        rgba(
            168,
            85,
            247,
            0.15
        );

    color: #d8b4fe;
}

.risk-very-loud {
    background:
        rgba(
            239,
            68,
            68,
            0.14
        );

    color: #fca5a5;
}

.risk-loud {
    background:
        rgba(
            245,
            158,
            11,
            0.14
        );

    color: #fcd34d;
}

.risk-moderate {
    background:
        rgba(
            163,
            201,
            28,
            0.13
        );

    color: #d9f99d;
}

.risk-lower {
    background:
        rgba(
            34,
            197,
            94,
            0.12
        );

    color: #86efac;
}

.risk-unlikely {
    background:
        rgba(
            148,
            163,
            184,
            0.08
        );

    color: #c1cad8;
}

.near-me-view {
    padding: 8px 11px;

    border:
        1px solid
        rgba(
            96,
            165,
            250,
            0.25
        );

    border-radius: 7px;

    background:
        rgba(
            59,
            130,
            246,
            0.10
        );

    color: #a9d0ff;

    font-size: 11px;
    font-weight: 700;

    cursor: pointer;
}


/* ======================================
   USER MARKER
====================================== */

.user-location-marker {
    background:
        none
        !important;

    border:
        none
        !important;
}

.user-location-dot {
    width: 20px;
    height: 20px;

    border:
        4px solid
        white;

    border-radius: 50%;

    background: #3b82f6;

    box-shadow:
        0
        0
        0
        7px
        rgba(
            59,
            130,
            246,
            0.20
        ),
        0
        0
        18px
        rgba(
            59,
            130,
            246,
            0.75
        );
}


/* ======================================
   WIND
====================================== */

.wind-noise-indicator {
    position: absolute;

    z-index: 950;

    left: 14px;
    bottom: 28px;

    display: flex;

    align-items: center;

    gap: 9px;

    padding: 9px 12px;

    border:
        1px solid
        rgba(
            125,
            211,
            252,
            0.22
        );

    border-radius: 11px;

    background:
        rgba(
            5,
            10,
            30,
            0.94
        );

    color: #dbeafe;

    box-shadow:
        0
        8px
        25px
        rgba(
            0,
            0,
            0,
            0.32
        );

    pointer-events: none;
}

.wind-noise-indicator.hidden {
    display: none;
}

.wind-arrow {
    width: 33px;
    height: 33px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 50%;

    background:
        rgba(
            56,
            189,
            248,
            0.12
        );

    color: #7dd3fc;

    font-size: 23px;
    font-weight: 800;
}

.wind-noise-indicator strong {
    display: block;

    font-size: 11px;
}

.wind-noise-indicator span {
    display: block;

    margin-top: 2px;

    color: #a9d0ff;

    font-size: 10px;
}


/* ======================================
   EVENTS
====================================== */

.events-section {
    margin-top: 23px;

    padding: 21px;
}

.next-display-panel {
    display: grid;

    grid-template-columns:
        auto
        1fr
        auto;

    align-items: center;

    gap: 14px;

    margin-bottom: 22px;

    padding: 15px 17px;

    border:
        1px solid
        rgba(
            251,
            191,
            36,
            0.18
        );

    border-radius: 14px;

    background:
        linear-gradient(
            135deg,
            rgba(
                245,
                158,
                11,
                0.08
            ),
            rgba(
                124,
                58,
                237,
                0.09
            )
        );
}

.next-display-icon {
    width: 45px;
    height: 45px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 50%;

    background:
        rgba(
            245,
            158,
            11,
            0.10
        );

    font-size: 25px;
}

.next-display-content strong,
.next-display-content span {
    display: block;
}

.next-display-content strong {
    margin-top: 4px;

    font-size: 15px;
}

.next-display-content > span:last-child {
    margin-top: 4px;

    color: #b8c4ff;

    font-size: 12px;
}

.next-display-countdown {
    min-width: 130px;

    padding: 10px 13px;

    border-radius: 10px;

    text-align: center;

    background:
        rgba(
            0,
            0,
            0,
            0.20
        );

    color: #fbbf24;

    font-size: 16px;
    font-weight: 800;
}

.events-heading {
    display: flex;

    justify-content:
        space-between;

    align-items:
        flex-end;

    margin-bottom: 16px;
}

.events-heading h2 {
    margin: 5px 0 0;

    font-size: 22px;
}

#filters {
    display: flex;
    gap: 7px;
}

#filters button {
    min-height: 40px;

    padding: 9px 14px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.11
        );

    border-radius: 8px;

    background:
        rgba(
            255,
            255,
            255,
            0.05
        );

    color: white;

    font-size: 12px;

    cursor: pointer;
}

#filters button.active-filter {
    background:
        linear-gradient(
            135deg,
            #fbbf24,
            #f97316
        );

    color: #111827;

    font-weight: 800;
}

.event-filter-panel {
    display: flex;

    align-items: end;

    gap: 10px;

    flex-wrap: wrap;

    margin-bottom: 10px;

    padding: 13px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.07
        );

    border-radius: 12px;

    background:
        rgba(
            5,
            10,
            30,
            0.20
        );
}

.event-filter-field {
    min-width: 180px;

    flex: 1;
}

.event-filter-field label {
    display: block;

    margin-bottom: 5px;

    color: #b4bfd3;

    font-size: 11px;
    font-weight: 700;
}

.event-filter-field select {
    width: 100%;

    min-height: 40px;

    padding: 9px 10px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.11
        );

    border-radius: 8px;

    background: #202846;

    color: white;

    font-size: 12px;
}

.event-filter-field option {
    background: #202846;
}

.filter-action-button {
    min-height: 40px;

    padding: 9px 12px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.11
        );

    border-radius: 8px;

    background:
        rgba(
            255,
            255,
            255,
            0.05
        );

    color: #d2d8e4;

    font-size: 11px;
    font-weight: 700;

    cursor: pointer;
}

.filter-action-button.active {
    border-color:
        rgba(
            251,
            191,
            36,
            0.40
        );

    background:
        rgba(
            251,
            191,
            36,
            0.12
        );

    color: #fbbf24;
}

.map-action-button {
    border-color:
        rgba(
            96,
            165,
            250,
            0.25
        );

    color: #a9d0ff;
}

.filter-result-info {
    min-height: 18px;

    margin-bottom: 9px;

    color: #a8b4c9;

    font-size: 11px;
}

#event-list {
    display: grid;

    grid-template-columns:
        repeat(
            auto-fit,
            minmax(
                250px,
                1fr
            )
        );

    gap: 12px;
}

.event-card {
    position: relative;

    padding: 15px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.08
        );

    border-radius: 12px;

    background:
        rgba(
            255,
            255,
            255,
            0.04
        );

    cursor: pointer;
}

.event-card:hover {
    border-color:
        rgba(
            251,
            191,
            36,
            0.4
        );
}

.event-card.watched {
    border-color:
        rgba(
            251,
            191,
            36,
            0.30
        );
}

.watch-event-btn {
    position: absolute;

    top: 12px;
    right: 12px;

    width: 33px;
    height: 33px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.10
        );

    border-radius: 50%;

    background:
        rgba(
            5,
            10,
            30,
            0.50
        );

    color: #718099;

    font-size: 18px;

    cursor: pointer;
}

.watch-event-btn.active {
    color: #fbbf24;

    border-color:
        rgba(
            251,
            191,
            36,
            0.35
        );

    background:
        rgba(
            251,
            191,
            36,
            0.10
        );
}

.event-card-title {
    max-width:
        calc(
            100% - 40px
        );

    font-size: 16px;
    line-height: 1.35;

    font-weight: 800;
}

.event-card-location {
    margin-top: 5px;

    color: #bcc6ff;

    font-size: 12px;
}

.event-type-badge {
    display: inline-block;

    margin-top: 8px;

    padding: 5px 8px;

    border-radius: 12px;

    background:
        rgba(
            96,
            165,
            250,
            0.1
        );

    color: #a9d0ff;

    font-size: 11px;
}

.card-display-list {
    display: grid;

    gap: 8px;

    margin-top: 11px;
}

.card-display-row {
    padding: 9px;

    border-radius: 8px;

    background:
        rgba(
            5,
            10,
            30,
            0.25
        );

    font-size: 12px;
    line-height: 1.5;
}

.card-display-row strong {
    display: block;

    margin-bottom: 4px;

    font-size: 12px;
}

.card-intensity {
    display: grid;

    grid-template-columns:
        repeat(
            5,
            1fr
        );

    gap: 2px;

    max-width: 120px;

    margin: 7px 0;
}

.card-intensity span {
    height: 6px;

    border-radius: 3px;

    opacity: 0.15;
}

.card-intensity span.on {
    opacity: 1;
}

.card-intensity span:nth-child(1) {
    background: #22c55e;
}

.card-intensity span:nth-child(2) {
    background: #a3c91c;
}

.card-intensity span:nth-child(3) {
    background: #f59e0b;
}

.card-intensity span:nth-child(4) {
    background: #ef4444;
}

.card-intensity span:nth-child(5) {
    background: #a855f7;
}

.event-actions {
    display: flex;

    gap: 7px;

    margin-top: 10px;
}

.edit-event-btn,
.delete-event-btn {
    min-height: 34px;

    padding: 7px 10px;

    border-radius: 6px;

    cursor: pointer;

    font-size: 11px;
}

.edit-event-btn {
    border:
        1px solid
        rgba(
            96,
            165,
            250,
            0.25
        );

    background:
        rgba(
            59,
            130,
            246,
            0.12
        );

    color: #a9d0ff;
}

.delete-event-btn {
    border:
        1px solid
        rgba(
            248,
            113,
            113,
            0.25
        );

    background:
        rgba(
            220,
            38,
            38,
            0.13
        );

    color: #fca5a5;
}


/* ======================================
   FIREWORK MARKER
====================================== */

.firework-marker,
.selected-firework-marker {
    background:
        none
        !important;

    border:
        none
        !important;
}

.firework {
    position: relative;

    width: 42px;
    height: 42px;
}

.firework-core {
    position: absolute;

    left: 50%;
    top: 50%;

    width: 8px;
    height: 8px;

    border-radius: 50%;

    background: #ffd84d;

    transform:
        translate(
            -50%,
            -50%
        );

    box-shadow:
        0 0 8px #ffd84d,
        0 0 16px #fb923c;
}

.firework .spark {
    position: absolute;

    left: 50%;
    top: 50%;

    width: 4px;
    height: 14px;

    transform-origin: top;

    background: #fb7185;
}

.firework .spark:nth-child(2) {
    transform: rotate(0deg);
}

.firework .spark:nth-child(3) {
    transform: rotate(45deg);
}

.firework .spark:nth-child(4) {
    transform: rotate(90deg);
}

.firework .spark:nth-child(5) {
    transform: rotate(135deg);
}

.firework .spark:nth-child(6) {
    transform: rotate(180deg);
}

.firework .spark:nth-child(7) {
    transform: rotate(225deg);
}

.firework .spark:nth-child(8) {
    transform: rotate(270deg);
}

.firework .spark:nth-child(9) {
    transform: rotate(315deg);
}


/* ======================================
   LOGIN / SIGN UP MODAL
====================================== */

.auth-modal {
    display: none;

    position: fixed;

    inset: 0;

    z-index: 10000;

    align-items: center;

    justify-content: center;

    padding: 20px;

    background:
        rgba(
            3,
            6,
            18,
            0.82
        );

    backdrop-filter:
        blur(7px);
}

.auth-modal.open {
    display: flex;
}

.auth-box {
    position: relative;

    width:
        min(
            410px,
            100%
        );

    padding: 28px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.10
        );

    border-radius: 18px;

    background:
        linear-gradient(
            145deg,
            #17203f,
            #11172f
        );

    box-shadow:
        0
        25px
        70px
        rgba(
            0,
            0,
            0,
            0.45
        );
}

.auth-icon {
    margin-bottom: 8px;

    font-size: 34px;
}

.auth-box h2 {
    margin:
        6px
        0
        5px;

    font-size: 25px;
}

.auth-description {
    margin:
        0
        0
        20px;

    color: #b6c1d5;

    font-size: 13px;
    line-height: 1.55;
}

.auth-box label {
    display: block;

    margin:
        14px
        0
        6px;

    color: #e2e8f0;

    font-size: 12px;
    font-weight: 700;
}

.auth-box input {
    width: 100%;

    min-height: 45px;

    padding: 10px 12px;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.13
        );

    border-radius: 9px;

    background: #202846;

    color: white;

    font-size: 14px;

    outline: none;
}

.auth-box input:focus {
    border-color: #fbbf24;
}

.auth-close {
    position: absolute;

    top: 14px;
    right: 14px;

    width: 34px;
    height: 34px;

    border: 0;

    border-radius: 50%;

    background:
        rgba(
            255,
            255,
            255,
            0.06
        );

    color: #cbd5e1;

    cursor: pointer;
}

.auth-main-button {
    width: 100%;

    min-height: 44px;

    margin-top: 14px;
}

.auth-switch {
    width: 100%;

    margin-top: 12px;

    padding: 8px;

    border: 0;

    background: none;

    color: #93c5fd;

    font-size: 12px;

    cursor: pointer;
}

.auth-switch:hover {
    color: white;
}

.auth-message {
    min-height: 18px;

    margin: 10px 0 0;

    color: #fca5a5;

    font-size: 12px;
    line-height: 1.45;
}

.auth-message.success {
    color: #86efac;
}


/* ======================================
   NOTIFICATION
====================================== */

.notification {
    display: none;

    position: fixed;

    inset: 0;

    z-index: 9999;

    justify-content: center;

    align-items: center;

    background:
        rgba(
            3,
            6,
            18,
            0.75
        );
}

.notification-box {
    width:
        min(
            380px,
            90%
        );

    padding: 24px;

    border-radius: 14px;

    text-align: center;

    background: #17203f;

    font-size: 14px;
}

.notification-box button {
    padding: 10px 20px;

    border: 0;

    border-radius: 8px;

    background: #f59e0b;

    font-size: 13px;
    font-weight: 800;
}


/* ======================================
   FOOTER
====================================== */

.app-footer {
    display: flex;

    justify-content:
        space-between;

    margin-top: 20px;

    color: #9aa7bd;

    font-size: 11px;
}


/* ======================================
   TABLET
====================================== */

@media (max-width:1000px) {

    .hero {
        grid-template-columns: 1fr;
    }

    .workspace {
        grid-template-columns: 1fr;
    }

    .side-panel {
        padding: 20px;
    }
}


/* ======================================
   MOBILE
====================================== */

@media (max-width:650px) {

    body {
        font-size: 15px;
    }

    .content {
        width:
            calc(
                100% - 18px
            );

        padding-top: 18px;
    }

    .app-header {
        min-height: 76px;

        padding: 10px 12px;
    }

    .app-header h1 {
        font-size: 21px;
    }

    .app-header p {
        font-size: 12px;
    }

    .header-firework {
        width: 48px;
        height: 48px;
    }

    .header-badge {
        display: none;
    }

    .header-actions {
        gap: 6px;
    }

    .auth-header-button {
        min-height: 42px;

        padding: 8px 11px;

        font-size: 12px;
    }

    .hero-copy,
    .weather-panel,
    .side-panel,
    .map-panel,
    .events-section {
        padding: 17px;
    }

    .hero h2 {
        font-size: 33px;
    }

    .hero p {
        font-size: 14px;
    }

    .section-kicker,
    .eyebrow {
        font-size: 11px;
    }

    .weather-current {
        flex-wrap: wrap;
    }

    .weather-meta {
        width: 100%;

        margin-left: 0;

        font-size: 12px;
    }

    .weather-forecast {
        grid-template-columns:
            repeat(
                5,
                1fr
            );
    }

    .forecast-day {
        padding:
            7px
            2px;

        font-size: 10px;
    }

    .map-heading {
        align-items:
            flex-start;

        flex-direction:
            column;
    }

    .map-controls-top {
        width: 100%;

        display: grid;

        grid-template-columns:
            1fr
            1fr;
    }

    .location-button,
    .pet-toggle {
        width: 100%;

        min-height: 44px;

        justify-content: center;

        font-size: 12px;
    }

    .map-status {
        grid-column:
            1 / -1;

        font-size: 11px;
    }

    #map {
        height: 470px;
    }

    .noise-legend {
        width: 175px;

        padding: 11px;

        font-size: 10px;
    }

    .noise-legend strong {
        font-size: 11px;
    }

    .noise-info {
        font-size: 11px;
    }

    .phase-time-grid {
        grid-template-columns: 1fr;
    }

    .event-form label {
        font-size: 13px;
    }

    .event-form input,
    .event-form select,
    .event-form textarea {
        min-height: 46px;

        font-size: 16px;
    }

    .phase-warning,
    .display-help,
    .map-location-instruction p {
        font-size: 12px;
    }

    .near-me-heading {
        align-items:
            flex-start;

        flex-direction:
            column;
    }

    .near-me-item {
        grid-template-columns: 1fr;
    }

    .near-me-view {
        width: 100%;

        min-height: 42px;

        font-size: 12px;
    }

    .near-me-item strong {
        font-size: 14px;
    }

    .near-me-meta,
    .near-me-risk {
        font-size: 12px;
    }

    .next-display-panel {
        grid-template-columns:
            auto
            1fr;
    }

    .next-display-countdown {
        grid-column:
            1 / -1;

        width: 100%;
    }

    .next-display-content strong {
        font-size: 14px;
    }

    .next-display-content > span:last-child {
        font-size: 12px;
    }

    .events-heading {
        align-items:
            flex-start;

        flex-direction:
            column;

        gap: 12px;
    }

    #filters {
        width: 100%;

        display: grid;

        grid-template-columns:
            repeat(
                3,
                1fr
            );
    }

    #filters button {
        min-height: 44px;

        padding:
            8px
            5px;

        font-size: 12px;
    }

    .event-filter-panel {
        align-items: stretch;

        flex-direction: column;
    }

    .event-filter-field {
        width: 100%;
    }

    .event-filter-field label {
        font-size: 12px;
    }

    .event-filter-field select {
        min-height: 44px;

        font-size: 16px;
    }

    .filter-action-button {
        width: 100%;

        min-height: 44px;

        font-size: 12px;
    }

    #event-list {
        grid-template-columns: 1fr;
    }

    .event-card-title {
        font-size: 17px;
    }

    .event-card-location {
        font-size: 13px;
    }

    .event-type-badge {
        font-size: 11px;
    }

    .card-display-row,
    .card-display-row strong {
        font-size: 12px;
    }

    .edit-event-btn,
    .delete-event-btn {
        min-height: 40px;

        padding: 8px 12px;

        font-size: 12px;
    }

    .auth-box {
        padding: 24px 18px;
    }

    .auth-box input {
        min-height: 48px;

        font-size: 16px;
    }

    .app-footer {
        flex-direction: column;

        gap: 4px;

        font-size: 11px;
    }
}

/* ======================================
   BATCH 1
   VISITS / ATTENDANCE / EVENT STATS
====================================== */


/* SITE VISIT COUNTER */

.site-visit-badge {
    min-height: 38px;

    display: flex;
    align-items: center;

    gap: 5px;

    padding: 8px 12px;

    border:
        1px solid
        rgba(255,255,255,0.10);

    border-radius: 20px;

    background:
        rgba(255,255,255,0.045);

    color: #cbd5e1;

    font-size: 11px;
    font-weight: 700;

    white-space: nowrap;
}


.site-visit-badge span,
.footer-visit-count span {
    color: #fbbf24;

    font-weight: 800;
}


.footer-visit-count {
    color: #aeb9cc;

    white-space: nowrap;
}


/* ======================================
   EVENT COMMUNITY STATS
====================================== */

.event-community-row {
    display: flex;

    align-items: center;
    justify-content: space-between;

    gap: 10px;

    flex-wrap: wrap;

    margin-top: 12px;

    padding: 10px 11px;

    border:
        1px solid
        rgba(255,255,255,0.07);

    border-radius: 9px;

    background:
        rgba(5,10,30,0.22);
}


.event-community-stats {
    color: #cbd5e1;

    font-size: 12px;
    line-height: 1.4;
}


.event-community-stats strong {
    color: #f8fafc;

    font-weight: 800;
}


/* ======================================
   ATTENDING BUTTON
====================================== */

.attending-btn {
    min-height: 36px;

    padding: 7px 11px;

    border:
        1px solid
        rgba(34,197,94,0.30);

    border-radius: 8px;

    background:
        rgba(34,197,94,0.08);

    color: #bbf7d0;

    font-size: 11px;
    font-weight: 800;

    cursor: pointer;

    transition:
        background 0.2s,
        border-color 0.2s,
        color 0.2s;
}


.attending-btn:hover {
    background:
        rgba(34,197,94,0.15);

    border-color:
        rgba(34,197,94,0.48);
}


.attending-btn.active {
    background:
        rgba(34,197,94,0.20);

    border-color:
        rgba(34,197,94,0.55);

    color: #dcfce7;
}


/* ======================================
   BUTTON BUSY STATES
====================================== */

.attending-btn:disabled,
.auth-main-button:disabled,
.submit-button:disabled,
.attendance-confirm:disabled,
.attendance-remove:disabled {
    opacity: 0.6;

    cursor: wait;
}


/* ======================================
   EVENT OWNER BADGE
====================================== */

.owner-badge {
    display: inline-block;

    margin-top: 8px;
    margin-left: 6px;

    padding: 5px 8px;

    border-radius: 12px;

    background:
        rgba(34,197,94,0.10);

    color: #86efac;

    font-size: 10px;
    font-weight: 800;
}


/* ======================================
   ATTENDANCE MODAL
====================================== */

.attendance-modal {
    display: none;

    position: fixed;

    inset: 0;

    z-index: 10020;

    align-items: center;
    justify-content: center;

    padding: 20px;

    background:
        rgba(3,6,18,0.82);

    backdrop-filter:
        blur(7px);
}


.attendance-modal.open {
    display: flex;
}


/* ATTENDANCE BOX */

.attendance-box {
    position: relative;

    width:
        min(
            400px,
            100%
        );

    padding: 28px;

    border:
        1px solid
        rgba(255,255,255,0.10);

    border-radius: 18px;

    background:
        linear-gradient(
            145deg,
            #17203f,
            #11172f
        );

    box-shadow:
        0 25px 70px
        rgba(0,0,0,0.45);

    text-align: center;
}


.attendance-icon {
    margin-bottom: 8px;

    font-size: 36px;
}


.attendance-box h2 {
    margin:
        6px
        0
        6px;

    font-size: 23px;
}


.attendance-description {
    margin:
        0
        0
        18px;

    color: #b6c1d5;

    font-size: 12px;
    line-height: 1.55;
}


/* CLOSE */

.attendance-close {
    position: absolute;

    top: 14px;
    right: 14px;

    width: 34px;
    height: 34px;

    border: 0;

    border-radius: 50%;

    background:
        rgba(255,255,255,0.06);

    color: #cbd5e1;

    cursor: pointer;
}


/* ======================================
   ATTENDANCE QUANTITY
====================================== */

.attendance-stepper {
    display: grid;

    grid-template-columns:
        52px
        1fr
        52px;

    align-items: center;

    gap: 12px;

    margin:
        18px
        0;
}


.attendance-stepper button {
    width: 52px;
    height: 52px;

    border:
        1px solid
        rgba(96,165,250,0.28);

    border-radius: 12px;

    background:
        rgba(59,130,246,0.10);

    color: #dbeafe;

    font-size: 26px;
    font-weight: 700;

    cursor: pointer;
}


.attendance-stepper button:hover {
    background:
        rgba(59,130,246,0.20);
}


.attendance-stepper strong {
    min-height: 52px;

    display: flex;

    align-items: center;
    justify-content: center;

    border:
        1px solid
        rgba(255,255,255,0.08);

    border-radius: 12px;

    background:
        rgba(255,255,255,0.04);

    color: #fbbf24;

    font-size: 28px;
    font-weight: 800;
}


/* ======================================
   ATTENDANCE ACTIONS
====================================== */

.attendance-confirm {
    width: 100%;

    min-height: 44px;
}


.attendance-remove {
    width: 100%;

    min-height: 40px;

    margin-top: 9px;

    border:
        1px solid
        rgba(248,113,113,0.22);

    border-radius: 8px;

    background:
        rgba(220,38,38,0.10);

    color: #fca5a5;

    font-size: 11px;
    font-weight: 700;

    cursor: pointer;
}


.attendance-remove:hover {
    background:
        rgba(220,38,38,0.18);
}


/* ======================================
   ATTENDANCE MESSAGE
====================================== */

.attendance-message {
    min-height: 18px;

    margin:
        10px
        0
        0;

    color: #fca5a5;

    font-size: 11px;
    line-height: 1.45;
}


.attendance-message.success {
    color: #86efac;
}


/* ======================================
   SMALL LAPTOP / TABLET
====================================== */

@media (max-width:850px) {

    .site-visit-badge {
        display: none;
    }

}


/* ======================================
   MOBILE
====================================== */

@media (max-width:650px) {

    .event-community-row {
        align-items: stretch;

        flex-direction: column;
    }


    .event-community-stats {
        font-size: 12px;
    }


    .attending-btn {
        width: 100%;

        min-height: 42px;

        font-size: 12px;
    }


    .attendance-box {
        padding:
            24px
            18px;
    }


    .attendance-stepper {
        grid-template-columns:
            48px
            1fr
            48px;
    }


    .attendance-stepper button {
        width: 48px;
        height: 48px;
    }

}/* =========================================================
   BATCH 2
   AUTH POLISH / VISITS / MAP POPUPS
========================================================= */


/* =========================================================
   SITE VISIT COUNTER - MORE READABLE
========================================================= */

.site-visit-badge {
    min-height: 40px;

    padding:
        8px
        14px;

    gap: 7px;

    font-size: 13px;
    font-weight: 700;

    color: #d8e0ef;

    background:
        rgba(
            255,
            255,
            255,
            0.055
        );

    border-color:
        rgba(
            255,
            255,
            255,
            0.13
        );
}


.site-visit-badge span {
    color: #fbbf24;

    font-size: 14px;
    font-weight: 800;
}


.footer-visit-count {
    font-size: 12px;
}


.footer-visit-count span {
    font-size: 13px;
    font-weight: 800;
}


/* =========================================================
   PASSWORD SHOW / HIDE
========================================================= */

.auth-password-wrapper {
    position: relative;

    width: 100%;
}


.auth-password-wrapper input {
    padding-right: 52px;
}


.auth-password-toggle {
    position: absolute;

    right: 8px;
    top: 50%;

    transform:
        translateY(-50%);

    width: 38px;
    height: 34px;

    display: flex;

    align-items: center;
    justify-content: center;

    padding: 0;

    border: 0;

    border-radius: 8px;

    background:
        rgba(
            255,
            255,
            255,
            0.045
        );

    color: #cbd5e1;

    font-size: 16px;

    cursor: pointer;
}


.auth-password-toggle:hover {
    background:
        rgba(
            255,
            255,
            255,
            0.10
        );

    color: white;
}


/* =========================================================
   CUSTOM SIGN OUT MODAL
========================================================= */

.signout-modal {
    display: none;

    position: fixed;

    inset: 0;

    z-index: 10030;

    align-items: center;
    justify-content: center;

    padding: 20px;

    background:
        rgba(
            3,
            6,
            18,
            0.84
        );

    backdrop-filter:
        blur(7px);
}


.signout-modal.open {
    display: flex;
}


.signout-box {
    position: relative;

    width:
        min(
            390px,
            100%
        );

    padding: 28px;

    text-align: center;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.10
        );

    border-radius: 18px;

    background:
        linear-gradient(
            145deg,
            #17203f,
            #11172f
        );

    box-shadow:
        0
        25px
        70px
        rgba(
            0,
            0,
            0,
            0.48
        );
}


.signout-icon {
    margin-bottom: 9px;

    font-size: 38px;
}


.signout-box h2 {
    margin:
        7px
        0
        7px;

    font-size: 24px;
}


.signout-description {
    margin:
        0
        0
        20px;

    color: #b8c2d6;

    font-size: 13px;
    line-height: 1.55;
}


.signout-actions {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 9px;

    margin-top: 19px;
}


.signout-cancel,
.signout-confirm {
    min-height: 44px;

    border-radius: 9px;

    font-size: 12px;
    font-weight: 800;

    cursor: pointer;
}


.signout-cancel {
    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.12
        );

    background:
        rgba(
            255,
            255,
            255,
            0.05
        );

    color: #d8e0ec;
}


.signout-cancel:hover {
    background:
        rgba(
            255,
            255,
            255,
            0.10
        );
}


.signout-confirm {
    border:
        1px solid
        rgba(
            248,
            113,
            113,
            0.30
        );

    background:
        linear-gradient(
            135deg,
            #ef4444,
            #dc2626
        );

    color: white;
}


.signout-confirm:hover {
    filter: brightness(1.08);
}


.signout-confirm:disabled {
    opacity: 0.55;

    cursor: wait;
}


/* =========================================================
   PROFESSIONAL LEAFLET EVENT POPUPS
========================================================= */

.leaflet-popup-content-wrapper {
    overflow: hidden;

    padding: 0;

    border:
        1px solid
        rgba(
            255,
            255,
            255,
            0.13
        );

    border-radius: 14px;

    background:
        linear-gradient(
            145deg,
            #182141,
            #10172e
        );

    color: #f8fafc;

    box-shadow:
        0
        18px
        45px
        rgba(
            0,
            0,
            0,
            0.40
        );
}


.leaflet-popup-content {
    min-width: 245px;

    margin: 0;

    padding:
        16px
        18px;

    color: #dce5f3;

    font-family:
        "Montserrat",
        Arial,
        sans-serif;

    font-size: 12px;

    line-height: 1.65;
}


.leaflet-popup-content strong:first-child {
    display: block;

    margin-bottom: 5px;

    color: #ffffff;

    font-size: 15px;
    font-weight: 800;

    line-height: 1.35;
}


.leaflet-popup-content strong {
    color: #fbbf24;

    font-size: 12px;
}


.leaflet-popup-tip {
    background: #11182f;
}


.leaflet-container
.leaflet-popup-close-button {
    top: 7px;
    right: 7px;

    width: 30px;
    height: 30px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 50%;

    color: #cbd5e1 !important;

    font-size: 19px !important;

    background:
        rgba(
            255,
            255,
            255,
            0.06
        );
}


.leaflet-container
.leaflet-popup-close-button:hover {
    color: white !important;

    background:
        rgba(
            255,
            255,
            255,
            0.12
        );
}


/* Marker itself gets a slightly stronger presentation */

.firework-marker {
    filter:
        drop-shadow(
            0
            4px
            7px
            rgba(
                0,
                0,
                0,
                0.42
            )
        );
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width:650px) {

    .footer-visit-count {
        font-size: 12px;
    }


    .leaflet-popup-content {
        min-width: 210px;

        padding:
            15px
            16px;

        font-size: 12px;
    }


    .leaflet-popup-content
    strong:first-child {
        font-size: 14px;
    }


    .signout-box {
        padding:
            24px
            18px;
    }


    .signout-actions {
        grid-template-columns: 1fr;
    }

}
/* =========================================================
   BATCH 3
   COMMUNITY VERIFICATION
========================================================= */

.event-trust-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;

    margin-top: 11px;
    padding: 10px 11px;

    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 9px;

    background: rgba(5,10,30,0.20);
}

.event-trust-main {
    display: flex;
    align-items: center;
    gap: 7px;
    flex-wrap: wrap;

    font-size: 11px;
    line-height: 1.45;
}

.trust-badge,
.source-badge {
    display: inline-flex;
    align-items: center;

    padding: 5px 8px;

    border-radius: 12px;

    font-size: 10px;
    font-weight: 800;
}

.trust-new {
    color: #fde68a;
    background: rgba(245,158,11,0.12);
    border: 1px solid rgba(245,158,11,0.24);
}

.trust-community {
    color: #bfdbfe;
    background: rgba(59,130,246,0.12);
    border: 1px solid rgba(59,130,246,0.24);
}

.trust-high {
    color: #bbf7d0;
    background: rgba(34,197,94,0.12);
    border: 1px solid rgba(34,197,94,0.26);
}

.trust-warning {
    color: #fed7aa;
    background: rgba(249,115,22,0.12);
    border: 1px solid rgba(249,115,22,0.27);
}

.trust-disputed {
    color: #fecaca;
    background: rgba(239,68,68,0.13);
    border: 1px solid rgba(239,68,68,0.30);
}

.source-badge {
    color: #cbd5e1;
    background: rgba(148,163,184,0.08);
    border: 1px solid rgba(148,163,184,0.15);
}

.source-organiser {
    color: #c4b5fd;
    background: rgba(139,92,246,0.12);
}

.source-official {
    color: #bbf7d0;
    background: rgba(34,197,94,0.12);
}

.verification-counts {
    color: #aeb9cc;
    font-size: 10px;
}

.verification-actions {
    display: flex;
    gap: 7px;
    flex-wrap: wrap;
}

.confirm-event-btn,
.report-event-btn {
    min-height: 34px;
    padding: 7px 10px;

    border-radius: 8px;

    font-size: 10px;
    font-weight: 800;

    cursor: pointer;
}

.confirm-event-btn {
    border: 1px solid rgba(34,197,94,0.28);
    background: rgba(34,197,94,0.08);
    color: #bbf7d0;
}

.confirm-event-btn.active {
    background: rgba(34,197,94,0.21);
    border-color: rgba(34,197,94,0.50);
}

.report-event-btn {
    border: 1px solid rgba(248,113,113,0.24);
    background: rgba(220,38,38,0.08);
    color: #fca5a5;
}

.report-event-btn.active {
    background: rgba(220,38,38,0.19);
    border-color: rgba(248,113,113,0.42);
}

.verification-owner-note {
    color: #a7b3c8;
    font-size: 10px;
    font-style: italic;
}


/* =========================================================
   REPORT MODAL
========================================================= */

.report-modal {
    display: none;

    position: fixed;
    inset: 0;

    z-index: 10040;

    align-items: center;
    justify-content: center;

    padding: 20px;

    background: rgba(3,6,18,0.84);

    backdrop-filter: blur(7px);
}

.report-modal.open {
    display: flex;
}

.report-box {
    position: relative;

    width: min(420px, 100%);

    padding: 27px;

    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 18px;

    background:
        linear-gradient(
            145deg,
            #17203f,
            #11172f
        );

    box-shadow:
        0 25px 70px rgba(0,0,0,0.48);
}

.report-icon {
    margin-bottom: 8px;

    font-size: 35px;
}

.report-box h2 {
    margin: 6px 0 6px;

    font-size: 23px;
}

.report-description {
    margin: 0 0 17px;

    color: #b6c1d5;

    font-size: 12px;
    line-height: 1.55;
}

.report-box label {
    display: block;

    margin-bottom: 6px;

    color: #e2e8f0;

    font-size: 12px;
    font-weight: 700;
}

.report-box select {
    width: 100%;
    min-height: 45px;

    padding: 10px 11px;

    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 9px;

    background: #202846;
    color: white;

    font-size: 13px;
}

.report-close {
    position: absolute;

    top: 14px;
    right: 14px;

    width: 34px;
    height: 34px;

    border: 0;
    border-radius: 50%;

    background: rgba(255,255,255,0.06);
    color: #cbd5e1;

    cursor: pointer;
}

.report-submit {
    width: 100%;
    min-height: 44px;

    margin-top: 15px;
}

.report-remove {
    width: 100%;
    min-height: 40px;

    margin-top: 9px;

    border: 1px solid rgba(248,113,113,0.22);
    border-radius: 8px;

    background: rgba(220,38,38,0.09);
    color: #fca5a5;

    font-size: 11px;
    font-weight: 700;

    cursor: pointer;
}

.report-message {
    min-height: 18px;

    margin: 10px 0 0;

    color: #fca5a5;

    font-size: 11px;
}

.report-message.success {
    color: #86efac;
}


/* =========================================================
   MAP POPUP TRUST
========================================================= */

.popup-trust-line {
    margin-top: 9px;
    padding-top: 8px;

    border-top: 1px solid rgba(255,255,255,0.08);

    color: #cbd5e1;

    font-size: 11px;
}

.popup-trust-line strong {
    color: #fbbf24;
}


/* MOBILE */

@media (max-width:650px) {

    .event-trust-row {
        align-items: stretch;
        flex-direction: column;
    }

    .verification-actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .confirm-event-btn,
    .report-event-btn {
        min-height: 42px;
        font-size: 11px;
    }

    .report-box {
        padding: 24px 18px;
    }

    .report-box select {
        min-height: 48px;
        font-size: 16px;
    }
}
/* =========================================================
   BATCH 5
   VISUAL POLISH + ADMIN READABILITY
========================================================= */


/* =========================================================
   PROFESSIONAL FIREWORKS ICON
========================================================= */

.fm-feature-icon {
    width: 54px;
    height: 54px;

    flex: 0 0 54px;

    display: flex;
    align-items: center;
    justify-content: center;

    border:
        1px solid
        rgba(251,191,36,0.28);

    border-radius: 14px;

    background:
        linear-gradient(
            145deg,
            rgba(251,191,36,0.08),
            rgba(15,23,42,0.65)
        );

    box-shadow:
        0 8px 20px
        rgba(0,0,0,0.22);
}


.fm-feature-icon svg {
    width: 44px;
    height: 44px;
}


.next-display-icon.fm-feature-icon {
    width: 58px;
    height: 58px;

    flex-basis: 58px;

    font-size: 0;
}


.idle-icon.fm-feature-icon {
    font-size: 0;
}


/* =========================================================
   ADMIN BUTTON
========================================================= */

.admin-reports-button {
    min-height: 42px !important;

    padding:
        9px
        15px
        !important;

    font-size: 13px !important;

    letter-spacing: 0.1px;
}


.admin-reports-button.has-reports {
    color: #fecaca;

    border-color:
        rgba(248,113,113,0.58);

    background:
        rgba(220,38,38,0.18);

    box-shadow:
        0 0 18px
        rgba(239,68,68,0.16);
}


/* =========================================================
   ADMIN REPORT WINDOW
========================================================= */

.admin-reports-panel {
    width:
        min(
            1040px,
            calc(100vw - 34px)
        ) !important;

    max-height:
        91vh
        !important;

    padding:
        30px
        !important;

    border-radius:
        20px
        !important;
}


.admin-heading h2 {
    margin:
        6px
        0
        5px
        !important;

    font-size:
        29px
        !important;

    line-height: 1.2;
}


.admin-heading p {
    max-width: 700px;

    color: #c1cada !important;

    font-size:
        14px
        !important;

    line-height: 1.55;
}


.admin-summary {
    margin-top:
        20px
        !important;

    padding:
        15px
        17px
        !important;

    font-size:
        14px
        !important;

    line-height: 1.5;
}


.admin-summary strong {
    color: #ffffff;

    font-size: 15px;
}


/* =========================================================
   ADMIN EVENT CARD
========================================================= */

.admin-report-list {
    gap:
        14px
        !important;

    margin-top:
        18px
        !important;
}


.admin-report-card {
    position: relative;

    overflow: hidden;

    padding:
        18px
        !important;

    border-radius:
        14px
        !important;

    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,0.045),
            rgba(5,10,30,0.18)
        );
}


.admin-report-card.status-warning::before,
.admin-report-card.status-disputed::before {
    content: "";

    position: absolute;

    left: 0;
    top: 0;
    bottom: 0;

    width: 5px;
}


.admin-report-card.status-warning::before {
    background: #f59e0b;
}


.admin-report-card.status-disputed::before {
    background: #ef4444;
}


.admin-report-name {
    font-size:
        19px
        !important;

    line-height: 1.3;
}


.admin-report-meta {
    margin-top:
        6px
        !important;

    color:
        #bdc7d8
        !important;

    font-size:
        13px
        !important;

    line-height: 1.55;
}


.admin-severity {
    padding:
        7px
        10px
        !important;

    border-radius:
        9px
        !important;

    font-size:
        12px
        !important;

    white-space: nowrap;
}


.admin-report-counts {
    display: flex;

    gap: 18px;

    flex-wrap: wrap;

    margin-top:
        13px
        !important;

    padding-top: 12px;

    border-top:
        1px solid
        rgba(255,255,255,0.07);

    color:
        #d4dbea
        !important;

    font-size:
        13px
        !important;

    font-weight: 600;
}


/* =========================================================
   REPORT BREAKDOWN
========================================================= */

.admin-breakdown {
    grid-template-columns:
        repeat(
            6,
            minmax(
                110px,
                1fr
            )
        )
        !important;

    gap:
        8px
        !important;

    margin-top:
        13px
        !important;
}


.admin-breakdown-item {
    position: relative;

    overflow: hidden;

    min-height: 66px;

    display: flex;

    flex-direction: column;

    justify-content: space-between;

    gap: 7px;

    padding:
        10px
        !important;

    border:
        1px solid
        rgba(255,255,255,0.06);

    border-radius:
        9px
        !important;

    color:
        #c3ccdc
        !important;

    font-size:
        11px
        !important;
}


.admin-breakdown-item strong {
    position: relative;
    z-index: 2;

    color:
        #ffffff
        !important;

    font-size:
        18px
        !important;
}


.admin-breakdown-bar {
    position: absolute;

    left: 0;
    bottom: 0;

    height: 3px;

    min-width: 0;

    border-radius:
        0
        4px
        4px
        0;

    background:
        linear-gradient(
            90deg,
            #f59e0b,
            #ef4444
        );

    opacity: 0.9;
}


/* =========================================================
   ADMIN ACTION BUTTONS
========================================================= */

.admin-report-actions {
    gap:
        9px
        !important;

    margin-top:
        15px
        !important;
}


.admin-report-actions button {
    min-height:
        43px
        !important;

    padding:
        9px
        15px
        !important;

    font-size:
        12px
        !important;

    border-radius:
        8px
        !important;
}


.admin-open-map:hover,
.admin-edit-event:hover,
.admin-resolve:hover {
    filter: brightness(1.15);
}


/* =========================================================
   PROFESSIONAL FIREWORK MAP MARKERS
========================================================= */

.fm-marker {
    width:
        52px
        !important;

    height:
        52px
        !important;

    border-radius:
        50% 50% 50% 12px
        !important;

    transform: rotate(-45deg);

    background:
        radial-gradient(
            circle,
            #162036,
            #090f1d
        )
        !important;

    box-shadow:
        0 7px 20px
        rgba(0,0,0,0.46)
        !important;
}


.fm-marker svg {
    width:
        41px
        !important;

    height:
        41px
        !important;

    transform: rotate(45deg);
}


.fm-marker-alert {
    right:
        -7px
        !important;

    top:
        -7px
        !important;

    transform: rotate(45deg);
}


.fm-marker.community {
    border:
        2px solid
        #3b82f6
        !important;
}


.fm-marker.confirmed {
    border:
        2px solid
        #22c55e
        !important;

    box-shadow:
        0 0 17px
        rgba(34,197,94,0.32)
        !important;
}


.fm-marker.warning {
    border:
        2px solid
        #f59e0b
        !important;

    box-shadow:
        0 0 18px
        rgba(245,158,11,0.40)
        !important;
}


.fm-marker.disputed {
    border:
        2px solid
        #ef4444
        !important;

    box-shadow:
        0 0 20px
        rgba(239,68,68,0.50)
        !important;
}


/* =========================================================
   MAP POPUP - MORE READABLE
========================================================= */

.leaflet-popup-content {
    min-width:
        275px
        !important;

    padding:
        19px
        20px
        !important;

    color:
        #d8e0ee
        !important;

    font-size:
        13px
        !important;

    line-height:
        1.65
        !important;
}


.leaflet-popup-content
strong:first-child {
    margin-bottom:
        8px
        !important;

    padding-right: 25px;

    color:
        #ffffff
        !important;

    font-size:
        18px
        !important;

    line-height: 1.3;
}


.fm-popup-meta {
    margin-top: 5px;

    color: #c0cadb;

    font-size: 13px;
}


.fm-popup-display {
    margin-top: 11px;

    padding:
        10px
        0;

    border-top:
        1px solid
        rgba(255,255,255,0.08);
}


.fm-popup-display strong {
    color: #fbbf24;

    font-size: 13px;
}


.fm-popup-trust {
    margin-top: 12px;

    padding:
        11px;

    border-radius:
        9px;

    background:
        rgba(255,255,255,0.035);

    font-size: 12px;
}


.fm-popup-trust.warning {
    border:
        1px solid
        rgba(245,158,11,0.22);

    background:
        rgba(245,158,11,0.07);
}


.fm-popup-trust.disputed {
    border:
        1px solid
        rgba(239,68,68,0.28);

    background:
        rgba(239,68,68,0.08);
}


.fm-popup-warning {
    margin-top: 9px;

    padding: 9px;

    border-radius: 8px;

    color: #fecaca;

    background:
        rgba(239,68,68,0.11);

    font-size: 12px;

    line-height: 1.5;
}


/* =========================================================
   OWNER REPORT INDICATOR
========================================================= */

.owner-report-alert {
    min-height: 34px;

    padding:
        7px
        10px
        !important;

    font-size:
        11px
        !important;
}


/* =========================================================
   TABLET
========================================================= */

@media (max-width:1050px) {

    .admin-breakdown {
        grid-template-columns:
            repeat(
                3,
                1fr
            )
            !important;
    }

}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width:650px) {

    .admin-reports-panel {
        width:
            calc(
                100vw - 16px
            )
            !important;

        padding:
            22px
            16px
            !important;
    }


    .admin-heading h2 {
        font-size:
            24px
            !important;
    }


    .admin-heading p,
    .admin-summary {
        font-size:
            13px
            !important;
    }


    .admin-report-name {
        font-size:
            18px
            !important;
    }


    .admin-report-meta {
        font-size:
            12px
            !important;
    }


    .admin-report-counts {
        font-size:
            12px
            !important;
    }


    .admin-breakdown {
        grid-template-columns:
            1fr
            1fr
            !important;
    }


    .admin-breakdown-item {
        min-height: 64px;

        font-size:
            11px
            !important;
    }


    .admin-report-actions {
        display: grid;

        grid-template-columns: 1fr;
    }


    .admin-report-actions button {
        width: 100%;

        min-height:
            46px
            !important;

        font-size:
            13px
            !important;
    }


    .leaflet-popup-content {
        min-width:
            235px
            !important;

        font-size:
            12px
            !important;
    }


    .leaflet-popup-content
    strong:first-child {
        font-size:
            16px
            !important;
    }


    .fm-feature-icon {
        width: 50px;
        height: 50px;

        flex-basis: 50px;
    }

}
/* =========================================================
   BATCH 6
   RESOLVE MODAL + EVENT DATES + UPCOMING FIX
========================================================= */


/* =========================================================
   EVENT CARD DATE
========================================================= */

.event-card-date {
    margin-top: 5px;

    color: #aeb9cc;

    font-size: 12px;
    font-weight: 500;

    line-height: 1.45;
}


/* =========================================================
   CUSTOM RESOLVE REPORTS MODAL
========================================================= */

.resolve-reports-modal {
    display: none;

    position: fixed;
    inset: 0;

    z-index: 10200;

    align-items: center;
    justify-content: center;

    padding: 20px;

    background:
        rgba(3,6,18,0.86);

    backdrop-filter: blur(8px);
}


.resolve-reports-modal.open {
    display: flex;
}


.resolve-reports-box {
    position: relative;

    width:
        min(
            440px,
            100%
        );

    padding: 28px;

    border:
        1px solid
        rgba(255,255,255,0.11);

    border-radius: 18px;

    background:
        linear-gradient(
            145deg,
            #17203f,
            #10172e
        );

    box-shadow:
        0 25px 70px
        rgba(0,0,0,0.52);
}


.resolve-reports-icon {
    width: 58px;
    height: 58px;

    display: flex;
    align-items: center;
    justify-content: center;

    margin-bottom: 12px;

    border:
        1px solid
        rgba(248,113,113,0.30);

    border-radius: 50%;

    background:
        rgba(239,68,68,0.10);

    color: #fb7185;

    font-size: 29px;
}


.resolve-reports-box h2 {
    margin:
        6px
        0
        7px;

    color: #ffffff;

    font-size: 24px;
    line-height: 1.25;
}


.resolve-reports-description {
    margin: 0;

    color: #c1cada;

    font-size: 14px;
    line-height: 1.6;
}


.resolve-reports-description strong {
    color: #fbbf24;
}


.resolve-reports-note {
    margin-top: 16px;

    padding: 11px 12px;

    border:
        1px solid
        rgba(96,165,250,0.13);

    border-radius: 9px;

    background:
        rgba(59,130,246,0.06);

    color: #b9c6da;

    font-size: 12px;
    line-height: 1.55;
}


.resolve-reports-actions {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 9px;

    margin-top: 20px;
}


.resolve-reports-confirm,
.resolve-reports-cancel {
    min-height: 46px;

    border-radius: 9px;

    font-size: 12px;
    font-weight: 800;

    cursor: pointer;
}


.resolve-reports-confirm {
    border:
        1px solid
        rgba(34,197,94,0.34);

    background:
        linear-gradient(
            135deg,
            #15803d,
            #166534
        );

    color: #ffffff;
}


.resolve-reports-confirm:hover {
    filter: brightness(1.10);
}


.resolve-reports-cancel {
    border:
        1px solid
        rgba(255,255,255,0.12);

    background:
        rgba(255,255,255,0.05);

    color: #d7dfeb;
}


.resolve-reports-cancel:hover {
    background:
        rgba(255,255,255,0.10);
}


.resolve-reports-confirm:disabled {
    opacity: 0.55;

    cursor: wait;
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width:650px) {

    .event-card-date {
        font-size: 12px;
    }


    .resolve-reports-box {
        padding:
            24px
            18px;
    }


    .resolve-reports-box h2 {
        font-size: 22px;
    }


    .resolve-reports-description {
        font-size: 13px;
    }


    .resolve-reports-actions {
        grid-template-columns: 1fr;
    }


    .resolve-reports-confirm,
    .resolve-reports-cancel {
        min-height: 48px;

        font-size: 13px;
    }

}
/* =========================================================
   BATCH 7
   TOP MAP DATE FILTERS
========================================================= */

.map-date-filter-wrap {
    display: flex;
    align-items: center;
    justify-content: space-between;

    gap: 12px;
    flex-wrap: wrap;

    margin-bottom: 12px;

    padding: 10px 12px;

    border:
        1px solid
        rgba(255,255,255,0.08);

    border-radius: 12px;

    background:
        rgba(255,255,255,0.035);
}


.map-date-filter-buttons {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}


.map-date-filter-buttons button {
    min-height: 38px;

    padding: 8px 14px;

    border:
        1px solid
        rgba(255,255,255,0.10);

    border-radius: 9px;

    background:
        rgba(255,255,255,0.045);

    color: #d7dfeb;

    font-size: 12px;
    font-weight: 800;

    cursor: pointer;

    transition:
        background 0.2s,
        border-color 0.2s,
        color 0.2s;
}


.map-date-filter-buttons button:hover {
    background:
        rgba(255,255,255,0.09);
}


.map-date-filter-buttons button.active {
    color: #111827;

    border-color:
        rgba(251,191,36,0.85);

    background:
        linear-gradient(
            135deg,
            #fbbf24,
            #f59e0b
        );

    box-shadow:
        0 0 14px
        rgba(245,158,11,0.16);
}


.map-date-filter-summary {
    color: #b6c1d3;

    font-size: 12px;
    font-weight: 600;
}


.map-date-filter-summary strong {
    color: #f8fafc;

    font-weight: 800;
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width:650px) {

    .map-date-filter-wrap {
        align-items: stretch;
        flex-direction: column;
    }


    .map-date-filter-buttons {
        display: grid;

        grid-template-columns:
            repeat(
                3,
                1fr
            );

        gap: 6px;
    }


    .map-date-filter-buttons button {
        width: 100%;

        min-height: 42px;

        padding:
            8px
            6px;

        font-size: 11px;
    }


    .map-date-filter-summary {
        text-align: center;

        font-size: 12px;
    }

}
/* =========================================================
   BATCH 8
   RANDOM GLOWING FIREWORK MARKERS
========================================================= */

.fm-random-firework-marker {
    position: relative;

    width: 34px;
    height: 34px;

    display: flex;
    align-items: center;
    justify-content: center;

    pointer-events: auto;
}


.fm-random-firework-marker svg {
    width: 32px;
    height: 32px;

    overflow: visible;
}


.fm-random-firework-marker .fw-ray,
.fm-random-firework-marker .fw-core {
    stroke: var(--fw-color);
}


.fm-random-firework-marker .fw-core {
    fill: var(--fw-color);
}


.fm-random-firework-marker {
    filter:
        drop-shadow(
            0
            0
            5px
            var(--fw-color)
        )
        drop-shadow(
            0
            0
            10px
            var(--fw-color)
        );

    transition:
        filter 0.8s ease;
}


.fm-random-firework-marker-inner {
    animation:
        fmMarkerPulse
        2.8s
        ease-in-out
        infinite;
}


@keyframes fmMarkerPulse {

    0% {
        transform: scale(0.92);
        opacity: 0.88;
    }

    50% {
        transform: scale(1.06);
        opacity: 1;
    }

    100% {
        transform: scale(0.92);
        opacity: 0.88;
    }

}


/* ======================================
   WARNING STATUS
====================================== */

.fm-marker-warning-badge {
    position: absolute;

    right: -5px;
    top: -5px;

    width: 16px;
    height: 16px;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 50%;

    color: white;

    font-size: 10px;
    font-weight: 900;

    line-height: 1;

    z-index: 5;
}


.fm-marker-warning-badge.warning {
    background: #f59e0b;

    box-shadow:
        0
        0
        8px
        rgba(245,158,11,0.75);
}


.fm-marker-warning-badge.disputed {
    background: #ef4444;

    box-shadow:
        0
        0
        9px
        rgba(239,68,68,0.85);
}


/* ======================================
   SELECTED NEW EVENT LOCATION
====================================== */

.fm-selected-firework-marker {
    width: 38px;
    height: 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    filter:
        drop-shadow(
            0
            0
            6px
            #ffffff
        )
        drop-shadow(
            0
            0
            12px
            #fbbf24
        );
}


.fm-selected-firework-marker svg {
    width: 36px;
    height: 36px;
}


.fm-selected-firework-marker {
    animation:
        fmSelectedPulse
        1.4s
        ease-in-out
        infinite;
}


@keyframes fmSelectedPulse {

    0% {
        transform: scale(0.94);
    }

    50% {
        transform: scale(1.10);
    }

    100% {
        transform: scale(0.94);
    }

}


/* ======================================
   MOBILE
====================================== */

@media (max-width:650px) {

    .fm-random-firework-marker {
        width: 30px;
        height: 30px;
    }


    .fm-random-firework-marker svg {
        width: 28px;
        height: 28px;
    }

}
/* =========================================================
   BATCH 8A
   STRONGER / BOLDER FIREWORK MARKERS
========================================================= */


/* Stronger overall glow */

.fm-random-firework-marker {
    filter:
        drop-shadow(
            0 0 3px
            var(--fw-color)
        )
        drop-shadow(
            0 0 7px
            var(--fw-color)
        )
        drop-shadow(
            0 0 13px
            var(--fw-color)
        );

    opacity: 1;
}


/* Make the actual firework larger */

.fm-random-firework-marker svg {
    width: 36px;
    height: 36px;
}


/* Much thicker firework rays */

.fm-random-firework-marker .fw-ray {
    stroke-width: 9 !important;
}


/* Larger, brighter centre */

.fm-random-firework-marker .fw-core {
    r: 10px;

    stroke: #ffffff;
    stroke-width: 2px;

    filter:
        drop-shadow(
            0 0 4px
            var(--fw-color)
        );
}


/* Keep the pulse subtle - colour should be the main effect */

.fm-random-firework-marker-inner {
    animation:
        fmMarkerPulseBold
        3s
        ease-in-out
        infinite;
}


@keyframes fmMarkerPulseBold {

    0% {
        transform: scale(0.96);
        opacity: 0.95;
    }

    50% {
        transform: scale(1.08);
        opacity: 1;
    }

    100% {
        transform: scale(0.96);
        opacity: 0.95;
    }

}


/* Mobile - don't shrink them too much */

@media (max-width:650px) {

    .fm-random-firework-marker svg {
        width: 34px;
        height: 34px;
    }

    .fm-random-firework-marker .fw-ray {
        stroke-width: 9 !important;
    }

}
/* =========================================================
   BATCH 8B
   CLEAN STATIC COLOUR FIREWORK MARKERS
========================================================= */

.fm-static-firework-marker {
    position: relative;

    width: 34px;
    height: 34px;

    display: flex;
    align-items: center;
    justify-content: center;

    pointer-events: auto;

    filter:
        drop-shadow(
            0 0 4px
            var(--fw-color)
        )
        drop-shadow(
            0 0 8px
            var(--fw-color)
        );
}


.fm-static-firework-marker svg {
    width: 33px;
    height: 33px;

    overflow: visible;
}


.fm-static-firework-marker .fw-static-ray {
    stroke: var(--fw-color);
}


.fm-static-firework-marker .fw-static-core {
    fill: var(--fw-color);
}


.fm-static-firework-inner {
    animation:
        fmStaticBreath
        3.4s
        ease-in-out
        infinite;
}


@keyframes fmStaticBreath {

    0% {
        transform: scale(0.97);
        opacity: 0.92;
    }

    50% {
        transform: scale(1.04);
        opacity: 1;
    }

    100% {
        transform: scale(0.97);
        opacity: 0.92;
    }

}


/* =========================================================
   WARNING BADGES
========================================================= */

.fm-static-warning-badge {
    position: absolute;

    right: -5px;
    top: -5px;

    width: 16px;
    height: 16px;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 50%;

    color: white;

    font-size: 10px;
    font-weight: 900;

    line-height: 1;

    z-index: 5;
}


.fm-static-warning-badge.warning {
    background: #f59e0b;

    box-shadow:
        0
        0
        8px
        rgba(245,158,11,0.75);
}


.fm-static-warning-badge.disputed {
    background: #ef4444;

    box-shadow:
        0
        0
        9px
        rgba(239,68,68,0.85);
}


/* =========================================================
   SELECTED LOCATION
========================================================= */

.fm-static-selected-marker {
    width: 38px;
    height: 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    filter:
        drop-shadow(
            0 0 6px
            #ffffff
        )
        drop-shadow(
            0 0 11px
            #fbbf24
        );

    animation:
        fmStaticSelectedPulse
        1.5s
        ease-in-out
        infinite;
}


.fm-static-selected-marker svg {
    width: 36px;
    height: 36px;
}


@keyframes fmStaticSelectedPulse {

    0% {
        transform: scale(0.96);
    }

    50% {
        transform: scale(1.08);
    }

    100% {
        transform: scale(0.96);
    }

}


@media (max-width:650px) {

    .fm-static-firework-marker {
        width: 30px;
        height: 30px;
    }

    .fm-static-firework-marker svg {
        width: 29px;
        height: 29px;
    }

}
/* =========================================================
   BATCH 9
   SEARCH + MY EVENTS + EVENT DETAILS + PAST EVENT HANDLING
========================================================= */


/* =========================================================
   SEARCH BAR
========================================================= */

.b9-search-panel {
    display: flex;
    align-items: center;
    gap: 9px;

    margin-bottom: 12px;
    padding: 11px 12px;

    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 12px;

    background: rgba(5,10,30,0.22);
}

.b9-search-box {
    position: relative;
    flex: 1;
}

.b9-search-box input {
    width: 100%;
    min-height: 43px;

    padding: 10px 44px 10px 39px;

    border: 1px solid rgba(255,255,255,0.11);
    border-radius: 9px;

    background: #202846;
    color: white;

    font-size: 13px;
    outline: none;
}

.b9-search-box input:focus {
    border-color: rgba(251,191,36,0.60);
}

.b9-search-icon {
    position: absolute;

    left: 13px;
    top: 50%;

    transform: translateY(-50%);

    color: #9eabc1;
    font-size: 15px;

    pointer-events: none;
}

.b9-search-clear {
    position: absolute;

    right: 7px;
    top: 50%;

    transform: translateY(-50%);

    width: 31px;
    height: 31px;

    display: none;
    align-items: center;
    justify-content: center;

    border: 0;
    border-radius: 50%;

    background: rgba(255,255,255,0.06);
    color: #cbd5e1;

    cursor: pointer;
}

.b9-search-clear.visible {
    display: flex;
}

.b9-search-status {
    min-width: 120px;

    color: #aeb9cc;

    font-size: 11px;
    font-weight: 700;

    text-align: right;
}


/* =========================================================
   MY EVENTS HEADER BUTTON
========================================================= */

.b9-my-events-btn {
    display: none;

    min-height: 40px;
    padding: 8px 13px;

    align-items: center;
    gap: 6px;

    border: 1px solid rgba(96,165,250,0.28);
    border-radius: 20px;

    background: rgba(59,130,246,0.09);
    color: #bfdbfe;

    font-size: 12px;
    font-weight: 800;

    cursor: pointer;
}

.b9-my-events-btn.visible {
    display: inline-flex;
}

.b9-my-events-btn:hover {
    background: rgba(59,130,246,0.17);
}


/* =========================================================
   SHARED BATCH 9 MODAL
========================================================= */

.b9-modal {
    display: none;

    position: fixed;
    inset: 0;

    z-index: 10300;

    align-items: center;
    justify-content: center;

    padding: 20px;

    background: rgba(3,6,18,0.86);

    backdrop-filter: blur(8px);
}

.b9-modal.open {
    display: flex;
}

.b9-modal-box {
    position: relative;

    width: min(700px,100%);
    max-height: 90vh;

    overflow-y: auto;

    padding: 27px;

    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 19px;

    background:
        linear-gradient(
            145deg,
            #17203f,
            #10172e
        );

    box-shadow:
        0 28px 75px
        rgba(0,0,0,0.52);
}

.b9-modal-close {
    position: absolute;

    right: 14px;
    top: 14px;

    width: 35px;
    height: 35px;

    border: 0;
    border-radius: 50%;

    background: rgba(255,255,255,0.06);
    color: #cbd5e1;

    cursor: pointer;
}

.b9-modal-close:hover {
    background: rgba(255,255,255,0.11);
    color: white;
}


/* =========================================================
   EVENT DETAILS
========================================================= */

.b9-details-title {
    max-width: calc(100% - 45px);

    margin: 6px 0 5px;

    color: white;

    font-size: 27px;
    line-height: 1.25;
}

.b9-details-location {
    color: #c0cadc;

    font-size: 14px;
}

.b9-details-date {
    margin-top: 4px;

    color: #fbbf24;

    font-size: 13px;
    font-weight: 700;
}

.b9-detail-meta-grid {
    display: grid;

    grid-template-columns:
        repeat(2,1fr);

    gap: 9px;

    margin-top: 17px;
}

.b9-detail-meta {
    padding: 11px;

    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 9px;

    background: rgba(5,10,30,0.22);

    color: #aeb9cc;

    font-size: 11px;
}

.b9-detail-meta strong {
    display: block;

    margin-top: 3px;

    color: #f8fafc;

    font-size: 13px;
}

.b9-details-section {
    margin-top: 19px;
}

.b9-details-section h3 {
    margin: 0 0 9px;

    font-size: 16px;
}

.b9-detail-display {
    margin-top: 8px;
    padding: 11px 12px;

    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 9px;

    background: rgba(5,10,30,0.25);

    color: #c7d0e0;

    font-size: 12px;
    line-height: 1.55;
}

.b9-detail-display strong {
    display: block;

    margin-bottom: 4px;

    color: #fbbf24;

    font-size: 13px;
}

.b9-detail-notes {
    padding: 12px;

    border-radius: 9px;

    background: rgba(255,255,255,0.035);

    color: #c3cddd;

    font-size: 12px;
    line-height: 1.65;
}

.b9-detail-trust {
    padding: 12px;

    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 10px;

    background: rgba(255,255,255,0.03);

    color: #cbd5e1;

    font-size: 12px;
    line-height: 1.6;
}

.b9-detail-actions {
    display: flex;
    gap: 8px;

    flex-wrap: wrap;

    margin-top: 20px;
}

.b9-detail-actions button {
    min-height: 42px;

    padding: 8px 14px;

    border-radius: 8px;

    font-size: 12px;
    font-weight: 800;

    cursor: pointer;
}

.b9-detail-map {
    border: 1px solid rgba(96,165,250,0.25);

    background: rgba(59,130,246,0.10);
    color: #bfdbfe;
}

.b9-detail-attend {
    border: 1px solid rgba(34,197,94,0.28);

    background: rgba(34,197,94,0.09);
    color: #bbf7d0;
}

.b9-detail-edit {
    border: 1px solid rgba(251,191,36,0.25);

    background: rgba(245,158,11,0.09);
    color: #fde68a;
}


/* =========================================================
   MY EVENTS
========================================================= */

.b9-my-events-heading h2 {
    margin: 5px 0 4px;

    font-size: 26px;
}

.b9-my-events-heading p {
    margin: 0;

    color: #aeb9cc;

    font-size: 12px;
}

.b9-my-events-list {
    display: grid;
    gap: 10px;

    margin-top: 18px;
}

.b9-my-event-card {
    padding: 14px;

    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 11px;

    background: rgba(255,255,255,0.035);
}

.b9-my-event-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;

    gap: 10px;
}

.b9-my-event-title {
    color: white;

    font-size: 15px;
    font-weight: 800;
}

.b9-my-event-meta {
    margin-top: 5px;

    color: #b4bfd2;

    font-size: 11px;
    line-height: 1.55;
}

.b9-event-state {
    padding: 5px 8px;

    border-radius: 10px;

    font-size: 10px;
    font-weight: 800;

    white-space: nowrap;
}

.b9-event-state.future {
    color: #bbf7d0;
    background: rgba(34,197,94,0.11);
}

.b9-event-state.today {
    color: #fde68a;
    background: rgba(245,158,11,0.11);
}

.b9-event-state.past {
    color: #cbd5e1;
    background: rgba(148,163,184,0.09);
}

.b9-my-event-stats {
    margin-top: 10px;

    padding-top: 9px;

    border-top: 1px solid rgba(255,255,255,0.06);

    color: #b9c4d6;

    font-size: 11px;
}

.b9-my-event-actions {
    display: flex;
    gap: 7px;

    margin-top: 10px;

    flex-wrap: wrap;
}

.b9-my-event-actions button {
    min-height: 36px;

    padding: 7px 10px;

    border-radius: 7px;

    font-size: 11px;
    font-weight: 700;

    cursor: pointer;
}

.b9-my-view {
    border: 1px solid rgba(96,165,250,0.23);

    background: rgba(59,130,246,0.09);
    color: #bfdbfe;
}

.b9-my-edit {
    border: 1px solid rgba(251,191,36,0.22);

    background: rgba(245,158,11,0.08);
    color: #fde68a;
}

.b9-my-delete {
    border: 1px solid rgba(248,113,113,0.22);

    background: rgba(220,38,38,0.08);
    color: #fca5a5;
}

.b9-my-events-empty {
    padding: 28px 15px;

    text-align: center;

    color: #9eabc0;

    font-size: 12px;
}


/* =========================================================
   DELETE CONFIRMATION
========================================================= */

.b9-delete-box {
    width: min(420px,100%);

    text-align: center;
}

.b9-delete-icon {
    width: 58px;
    height: 58px;

    display: flex;
    align-items: center;
    justify-content: center;

    margin: 0 auto 11px;

    border-radius: 50%;

    background: rgba(239,68,68,0.11);
    color: #f87171;

    font-size: 28px;
}

.b9-delete-box h2 {
    margin: 5px 0 7px;

    font-size: 23px;
}

.b9-delete-box p {
    color: #bcc7d9;

    font-size: 13px;
    line-height: 1.6;
}

.b9-delete-actions {
    display: grid;

    grid-template-columns: 1fr 1fr;

    gap: 8px;

    margin-top: 18px;
}

.b9-delete-actions button {
    min-height: 44px;

    border-radius: 8px;

    font-size: 12px;
    font-weight: 800;

    cursor: pointer;
}

.b9-delete-confirm {
    border: 1px solid rgba(248,113,113,0.32);

    background: #b91c1c;
    color: white;
}

.b9-delete-cancel {
    border: 1px solid rgba(255,255,255,0.11);

    background: rgba(255,255,255,0.05);
    color: #d7deeb;
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width:650px) {

    .b9-search-panel {
        align-items: stretch;
        flex-direction: column;
    }

    .b9-search-box input {
        min-height: 47px;

        font-size: 16px;
    }

    .b9-search-status {
        min-width: 0;

        text-align: left;

        font-size: 11px;
    }

    .b9-modal {
        padding: 8px;
    }

    .b9-modal-box {
        width: 100%;

        padding: 22px 16px;
    }

    .b9-details-title {
        font-size: 22px;
    }

    .b9-detail-meta-grid {
        grid-template-columns: 1fr;
    }

    .b9-detail-actions {
        display: grid;

        grid-template-columns: 1fr;
    }

    .b9-detail-actions button {
        width: 100%;

        min-height: 46px;

        font-size: 13px;
    }

    .b9-my-event-top {
        flex-direction: column;
    }

    .b9-my-event-actions {
        display: grid;

        grid-template-columns: 1fr;
    }

    .b9-my-event-actions button {
        width: 100%;

        min-height: 42px;
    }

    .b9-delete-actions {
        grid-template-columns: 1fr;
    }

}
/* =========================================================
   BATCH 10A ADMIN UI RESTORE
   Permanent CSS - no JS-injected styling
========================================================= */


/* =========================================================
   ADMIN REPORTS HEADER BUTTON
========================================================= */

.admin-reports-button {
    display: none;

    min-height: 42px;

    padding: 9px 15px;

    align-items: center;
    justify-content: center;
    gap: 7px;

    border:
        1px solid
        rgba(248, 113, 113, 0.30);

    border-radius: 22px;

    background:
        rgba(220, 38, 38, 0.08);

    color: #fecaca;

    font-family: inherit;

    font-size: 12px;
    font-weight: 800;

    cursor: pointer;

    transition:
        background 0.2s ease,
        border-color 0.2s ease,
        transform 0.2s ease;
}


.admin-reports-button.visible {
    display: inline-flex;
}


.admin-reports-button:hover {
    background:
        rgba(220, 38, 38, 0.15);

    border-color:
        rgba(248, 113, 113, 0.50);
}


.admin-reports-button.has-reports {
    background:
        rgba(220, 38, 38, 0.17);

    border-color:
        rgba(248, 113, 113, 0.55);

    box-shadow:
        0 0 18px
        rgba(239, 68, 68, 0.14);
}


/* =========================================================
   ADMIN MODAL BACKDROP
========================================================= */

.admin-reports-modal {
    display: none;

    position: fixed;

    inset: 0;

    z-index: 15000;

    align-items: center;
    justify-content: center;

    padding: 22px;

    background:
        rgba(2, 6, 18, 0.88);

    backdrop-filter: blur(9px);
    -webkit-backdrop-filter: blur(9px);
}


.admin-reports-modal.open {
    display: flex;
}


/* =========================================================
   ADMIN PANEL
========================================================= */

.admin-reports-panel {
    position: relative;

    width:
        min(
            1040px,
            calc(100vw - 40px)
        );

    max-height: 90vh;

    overflow-y: auto;

    padding: 30px;

    border:
        1px solid
        rgba(255, 255, 255, 0.10);

    border-radius: 20px;

    background:
        linear-gradient(
            145deg,
            #161e3a 0%,
            #0d1429 100%
        );

    box-shadow:
        0 35px 90px
        rgba(0, 0, 0, 0.65);

    color: #f8fafc;
}


/* =========================================================
   CLOSE BUTTON
========================================================= */

.admin-close {
    position: absolute;

    top: 15px;
    right: 15px;

    width: 38px;
    height: 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 0;

    border:
        1px solid
        rgba(255, 255, 255, 0.08);

    border-radius: 50%;

    background:
        rgba(255, 255, 255, 0.055);

    color: #aeb9cc;

    font-family: inherit;

    font-size: 17px;

    cursor: pointer;

    transition:
        background 0.2s ease,
        color 0.2s ease;
}


.admin-close:hover {
    background:
        rgba(255, 255, 255, 0.11);

    color: #ffffff;
}


/* =========================================================
   ADMIN HEADING
========================================================= */

.admin-heading {
    padding-right: 50px;
}


.admin-heading .section-kicker {
    color: #fbbf24;

    font-size: 12px;
    font-weight: 900;

    letter-spacing: 1.2px;
}


.admin-heading h2 {
    margin:
        7px
        0
        6px;

    color: #ffffff;

    font-size: 29px;
    font-weight: 850;

    line-height: 1.2;
}


.admin-heading p {
    max-width: 720px;

    margin: 0;

    color: #b8c2d5;

    font-size: 14px;

    line-height: 1.55;
}


/* =========================================================
   SUMMARY
========================================================= */

.admin-summary {
    margin-top: 21px;

    padding: 15px 17px;

    border:
        1px solid
        rgba(248, 113, 113, 0.16);

    border-radius: 11px;

    background:
        rgba(220, 38, 38, 0.06);

    color: #fecaca;

    font-size: 14px;

    line-height: 1.5;
}


.admin-summary strong {
    color: #ffffff;

    font-size: 15px;
}


/* =========================================================
   REPORT LIST
========================================================= */

.admin-report-list {
    display: grid;

    gap: 14px;

    margin-top: 17px;
}


.admin-empty {
    padding: 34px 20px;

    border:
        1px solid
        rgba(255, 255, 255, 0.06);

    border-radius: 12px;

    background:
        rgba(255, 255, 255, 0.025);

    color: #aeb9cc;

    text-align: center;

    font-size: 14px;

    line-height: 1.6;
}


/* =========================================================
   REPORT CARD
========================================================= */

.admin-report-card {
    position: relative;

    overflow: hidden;

    padding: 19px;

    border:
        1px solid
        rgba(255, 255, 255, 0.075);

    border-radius: 14px;

    background:
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.045),
            rgba(4, 9, 25, 0.20)
        );
}


.admin-report-card.status-warning::before,
.admin-report-card.status-disputed::before {
    content: "";

    position: absolute;

    top: 0;
    bottom: 0;
    left: 0;

    width: 4px;
}


.admin-report-card.status-warning::before {
    background: #f59e0b;
}


.admin-report-card.status-disputed::before {
    background: #ef4444;
}


.admin-report-top {
    display: flex;

    align-items: flex-start;
    justify-content: space-between;

    gap: 15px;
}


.admin-report-name {
    color: #ffffff;

    font-size: 19px;
    font-weight: 850;

    line-height: 1.3;
}


.admin-report-meta {
    margin-top: 6px;

    color: #b5c0d4;

    font-size: 13px;

    line-height: 1.5;
}


/* =========================================================
   STATUS
========================================================= */

.admin-severity {
    flex: 0 0 auto;

    padding: 7px 10px;

    border-radius: 9px;

    font-size: 12px;
    font-weight: 850;

    white-space: nowrap;
}


.admin-severity.warning {
    color: #fdba74;

    background:
        rgba(249, 115, 22, 0.12);

    border:
        1px solid
        rgba(249, 115, 22, 0.16);
}


.admin-severity.disputed {
    color: #fca5a5;

    background:
        rgba(239, 68, 68, 0.13);

    border:
        1px solid
        rgba(239, 68, 68, 0.18);
}


/* =========================================================
   CONFIRMATION / REPORT COUNTS
========================================================= */

.admin-report-counts {
    margin-top: 14px;

    padding-top: 12px;

    border-top:
        1px solid
        rgba(255, 255, 255, 0.065);

    color: #d1d9e6;

    font-size: 13px;
    font-weight: 650;
}


/* =========================================================
   BREAKDOWN
========================================================= */

.admin-breakdown {
    display: grid;

    grid-template-columns:
        repeat(
            6,
            minmax(
                100px,
                1fr
            )
        );

    gap: 8px;

    margin-top: 13px;
}


.admin-breakdown-item {
    min-height: 65px;

    display: flex;
    flex-direction: column;
    justify-content: space-between;

    gap: 7px;

    padding: 10px;

    border:
        1px solid
        rgba(255, 255, 255, 0.06);

    border-radius: 9px;

    background:
        rgba(4, 9, 25, 0.25);

    color: #aeb9cc;

    font-size: 11px;
}


.admin-breakdown-item strong {
    color: #ffffff;

    font-size: 19px;
    font-weight: 850;
}


/* =========================================================
   ADMIN ACTIONS
========================================================= */

.admin-report-actions {
    display: flex;

    flex-wrap: wrap;

    gap: 9px;

    margin-top: 15px;
}


.admin-report-actions button {
    min-height: 42px;

    padding: 9px 14px;

    border-radius: 8px;

    font-family: inherit;

    font-size: 12px;
    font-weight: 800;

    cursor: pointer;

    transition:
        background 0.2s ease,
        filter 0.2s ease;
}


.admin-open-map {
    border:
        1px solid
        rgba(96, 165, 250, 0.25);

    background:
        rgba(59, 130, 246, 0.10);

    color: #bfdbfe;
}


.admin-edit-event {
    border:
        1px solid
        rgba(251, 191, 36, 0.24);

    background:
        rgba(245, 158, 11, 0.09);

    color: #fde68a;
}


.admin-resolve {
    border:
        1px solid
        rgba(34, 197, 94, 0.25);

    background:
        rgba(34, 197, 94, 0.09);

    color: #bbf7d0;
}


.admin-report-actions button:hover {
    filter: brightness(1.16);
}


/* =========================================================
   RESPONSIVE
========================================================= */

@media (max-width: 1050px) {

    .admin-breakdown {
        grid-template-columns:
            repeat(
                3,
                1fr
            );
    }

}


@media (max-width: 650px) {

    .admin-reports-modal {
        padding: 8px;
    }


    .admin-reports-panel {
        width: 100%;

        max-height: 94vh;

        padding:
            24px
            16px;

        border-radius: 16px;
    }


    .admin-heading h2 {
        font-size: 24px;
    }


    .admin-heading p {
        font-size: 13px;
    }


    .admin-summary {
        font-size: 13px;
    }


    .admin-report-top {
        flex-direction: column;
    }


    .admin-report-name {
        font-size: 18px;
    }


    .admin-report-meta {
        font-size: 12px;
    }


    .admin-breakdown {
        grid-template-columns:
            1fr
            1fr;
    }


    .admin-report-actions {
        display: grid;

        grid-template-columns: 1fr;
    }


    .admin-report-actions button {
        width: 100%;

        min-height: 46px;

        font-size: 13px;
    }

}
/* =========================================================
   BATCH 10A ICON RESTORE
   PROFESSIONAL FEATURE ICONS
========================================================= */

.fm-ui-icon {
    width: 38px;
    height: 38px;

    flex: 0 0 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    border:
        1px solid
        rgba(251, 191, 36, 0.16);

    border-radius: 11px;

    background:
        rgba(251, 191, 36, 0.055);
}


.fm-ui-icon svg {
    width: 25px;
    height: 25px;

    overflow: visible;
}


/* Next display gets a slightly stronger icon */

.next-display-icon.fm-ui-icon {
    width: 48px;
    height: 48px;

    flex-basis: 48px;

    border-radius: 13px;

    background:
        rgba(251, 191, 36, 0.07);

    box-shadow:
        0 0 14px
        rgba(251, 191, 36, 0.07);
}


.next-display-icon.fm-ui-icon svg {
    width: 30px;
    height: 30px;
}


/* Remove emoji sizing inherited from old styles */

.idle-icon.fm-ui-icon,
.next-display-icon.fm-ui-icon {
    font-size: 0;
}
/* =========================================================
   OWNER EVENT ACTION BUTTON ALIGNMENT FIX
========================================================= */

.event-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}


/* Keep report alert aligned with Edit/Delete */

.owner-report-alert {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-height: 42px;

    padding: 8px 13px;

    margin: 0;

    border-radius: 8px;

    border:
        1px solid
        rgba(248, 113, 113, 0.24);

    background:
        rgba(220, 38, 38, 0.08);

    color: #fca5a5;

    font-family: inherit;
    font-size: 12px;
    font-weight: 800;

    cursor: pointer;
}


/* If the report button was added after .event-actions,
   pull all owner controls into one visual row */

.event-card > .owner-report-alert {
    margin-top: 10px;
}


/* Desktop: keep Edit/Delete/Report visually aligned */

@media (min-width: 651px) {

    .event-card .event-actions {
        display: inline-flex;
        vertical-align: middle;
    }

    .event-card > .owner-report-alert {
        display: inline-flex;

        margin-top: 0;
        margin-left: 8px;

        vertical-align: middle;
    }

}


/* Mobile: stack cleanly */

@media (max-width: 650px) {

    .event-actions {
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .event-actions button,
    .owner-report-alert {
        width: 100%;
        min-height: 44px;
    }

    .event-card > .owner-report-alert {
        margin:
            8px
            0
            0;
    }

}/* =========================================================
   FINAL OWNER ACTION ALIGNMENT
========================================================= */

.event-card .event-actions,
.event-card > .owner-report-alert {
    vertical-align: middle;
}


.event-card .event-actions {
    display: inline-flex;
    align-items: center;

    gap: 10px;

    margin-top: 12px;
}


.event-card .event-actions button,
.event-card > .owner-report-alert {
    height: 42px;
    min-height: 42px;

    padding: 0 14px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    line-height: 1;

    box-sizing: border-box;
}


.event-card > .owner-report-alert {
    margin:
        12px
        0
        0
        8px;
}


/* MOBILE */

@media (max-width: 650px) {

    .event-card .event-actions {
        display: grid;
        grid-template-columns: 1fr;

        width: 100%;
    }

    .event-card .event-actions button,
    .event-card > .owner-report-alert {
        width: 100%;
        height: 44px;
        min-height: 44px;
    }

    .event-card > .owner-report-alert {
        margin:
            8px
            0
            0;
    }

}
/* =========================================================
   RECOMMENDED VIEWING SPOT
========================================================= */

.fm-viewing-section {
    margin-top: 18px;
    padding: 16px;

    border: 1px solid rgba(34, 211, 238, 0.16);
    border-radius: 12px;

    background: rgba(34, 211, 238, 0.035);
}


.fm-viewing-heading {
    display: flex;
    align-items: center;
    gap: 10px;

    margin-bottom: 6px;
}


.fm-viewing-heading-icon {
    width: 35px;
    height: 35px;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 10px;

    background: rgba(34, 211, 238, 0.09);

    color: #67e8f9;
}


.fm-viewing-heading-icon svg {
    width: 23px;
    height: 23px;
}


.fm-viewing-heading strong {
    color: #ffffff;
    font-size: 14px;
}


.fm-viewing-help {
    margin: 0 0 13px;

    color: #aeb9cc;

    font-size: 12px;
    line-height: 1.55;
}


.fm-viewing-select-btn {
    min-height: 42px;

    padding: 9px 14px;

    border: 1px solid rgba(34, 211, 238, 0.28);
    border-radius: 8px;

    background: rgba(34, 211, 238, 0.08);

    color: #a5f3fc;

    font-family: inherit;
    font-size: 12px;
    font-weight: 800;

    cursor: pointer;
}


.fm-viewing-select-btn:hover {
    background: rgba(34, 211, 238, 0.14);
}


.fm-viewing-clear-btn {
    min-height: 42px;

    margin-left: 7px;
    padding: 9px 12px;

    border: 1px solid rgba(248, 113, 113, 0.20);
    border-radius: 8px;

    background: rgba(220, 38, 38, 0.06);

    color: #fca5a5;

    font-family: inherit;
    font-size: 12px;
    font-weight: 750;

    cursor: pointer;
}


.fm-viewing-status {
    margin-top: 10px;

    color: #aeb9cc;

    font-size: 12px;
}


.fm-viewing-status.selected {
    color: #67e8f9;
    font-weight: 700;
}


.fm-viewing-note-label {
    display: block;

    margin-top: 14px;
    margin-bottom: 6px;

    color: #d7deea;

    font-size: 12px;
    font-weight: 700;
}


.fm-viewing-note {
    width: 100%;
    min-height: 76px;

    padding: 10px 12px;

    resize: vertical;

    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 8px;

    background: #202846;
    color: white;

    font-family: inherit;
    font-size: 13px;

    outline: none;
}


.fm-viewing-note:focus {
    border-color: rgba(34, 211, 238, 0.55);
}


/* =========================================================
   MAP PICKING NOTICE
========================================================= */

.fm-viewing-map-notice {
    position: absolute;

    z-index: 1200;

    top: 14px;
    left: 50%;

    transform: translateX(-50%);

    width: min(430px, calc(100% - 30px));

    padding: 12px 15px;

    border: 1px solid rgba(34, 211, 238, 0.35);
    border-radius: 10px;

    background: rgba(8, 18, 39, 0.94);

    color: #e6fbff;

    box-shadow:
        0 15px 35px
        rgba(0,0,0,0.35);

    text-align: center;

    font-size: 12px;
    font-weight: 700;

    pointer-events: none;
}


/* =========================================================
   VIEWING SPOT MAP MARKER
========================================================= */

.fm-viewing-marker {
    width: 38px;
    height: 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    border: 2px solid #67e8f9;
    border-radius: 50%;

    background: #0f1933;

    box-shadow:
        0 0 7px rgba(34,211,238,0.65),
        0 0 16px rgba(34,211,238,0.22);
}


.fm-viewing-marker svg {
    width: 23px;
    height: 23px;
}


/* =========================================================
   PUBLIC VIEWING SPOT DETAILS
========================================================= */

.fm-public-viewing {
    margin-top: 18px;

    padding: 14px;

    border: 1px solid rgba(34, 211, 238, 0.15);
    border-radius: 10px;

    background: rgba(34, 211, 238, 0.035);
}


.fm-public-viewing-title {
    color: #67e8f9;

    font-size: 13px;
    font-weight: 850;
}


.fm-public-viewing-subtitle {
    margin-top: 3px;

    color: #93a4bb;

    font-size: 11px;
}


.fm-public-viewing-note {
    margin-top: 9px;

    color: #d4deeb;

    font-size: 12px;
    line-height: 1.55;
}


.fm-show-viewing-btn {
    min-height: 41px;

    margin-top: 11px;
    padding: 8px 13px;

    border: 1px solid rgba(34,211,238,0.27);
    border-radius: 8px;

    background: rgba(34,211,238,0.08);

    color: #a5f3fc;

    font-family: inherit;
    font-size: 12px;
    font-weight: 800;

    cursor: pointer;
}


@media (max-width: 650px) {

    .fm-viewing-select-btn,
    .fm-viewing-clear-btn {
        width: 100%;

        margin:
            6px
            0
            0;
    }

}
/* =========================================================
   FIX RESOLVE REPORTS MODAL LAYER ORDER
========================================================= */

.resolve-reports-modal {
    z-index: 16000 !important;
}

/* =========================================================
   PROFESSIONAL FIREWORK ICON — GLOBAL REPLACEMENT
   Replaces remaining literal fireworks emoji with the
   same clean starburst language used across Fireworks Malta.
========================================================= */

.fm-inline-firework {
    width: 34px;
    height: 34px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    flex: 0 0 34px;

    vertical-align: middle;

    border-radius: 10px;

    background:
        rgba(251, 191, 36, 0.07);

    border:
        1px solid
        rgba(251, 191, 36, 0.15);

    box-shadow:
        0 0 14px
        rgba(251, 191, 36, 0.06);
}

.fm-inline-firework svg {
    width: 24px;
    height: 24px;

    display: block;
    overflow: visible;
}

.fm-inline-firework-small {
    width: 22px;
    height: 22px;

    flex-basis: 22px;

    margin-right: 5px;

    border-radius: 6px;
}

.fm-inline-firework-small svg {
    width: 16px;
    height: 16px;
}


/* Sign-in / account modal */

.auth-icon {
    display: flex;
    align-items: center;
    justify-content: flex-start;

    min-height: 42px;

    font-size: 0;
}

.auth-icon .fm-inline-firework {
    width: 42px;
    height: 42px;

    flex-basis: 42px;

    border-radius: 11px;
}

.auth-icon .fm-inline-firework svg {
    width: 29px;
    height: 29px;
}


/* Next display */

.next-display-icon {
    font-size: 0;
}

.next-display-icon .fm-inline-firework {
    width: 100%;
    height: 100%;

    flex-basis: 100%;

    border: 0;
    background: transparent;
    box-shadow: none;
}

.next-display-icon .fm-inline-firework svg {
    width: 30px;
    height: 30px;
}


/* Feature-card fallback if JS icon restoration has not run yet */

.idle-icon .fm-inline-firework {
    width: 36px;
    height: 36px;

    flex-basis: 36px;
}

.idle-icon {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* =========================================================
   FIREWORKS MALTA — FINAL MOBILE / TABLET LAUNCH POLISH
   Presentation-only overrides. No application logic changed.
========================================================= */

html,
body {
    max-width: 100%;
    overflow-x: hidden;
}

button,
input,
select,
textarea {
    max-width: 100%;
}


/* =========================================================
   TABLET / SMALL LAPTOP
========================================================= */

@media (max-width: 1000px) {

    .app-header {
        gap: 12px;
    }

    .header-actions {
        flex-wrap: wrap;
        justify-content: flex-end;
    }

    .b9-my-events-btn,
    .admin-reports-button,
    .auth-header-button {
        min-height: 42px;
    }

    .map-panel,
    .side-panel,
    .events-section,
    .hero-copy,
    .weather-panel {
        min-width: 0;
    }

    .event-filter-panel {
        align-items: stretch;
    }
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 650px) {

    /* PAGE / HEADER */

    .app-header {
        min-height: 0;

        display: grid;
        grid-template-columns: 1fr;
        gap: 10px;

        padding:
            max(10px, env(safe-area-inset-top))
            12px
            10px;
    }

    .brand-area {
        min-width: 0;
        gap: 11px;
    }

    .brand-area > div:last-child {
        min-width: 0;
    }

    .app-header h1 {
        font-size: 21px;
        overflow-wrap: anywhere;
    }

    .app-header p {
        margin-top: 3px;

        font-size: 11px;
        line-height: 1.35;
    }

    .header-firework {
        width: 43px;
        height: 43px;

        flex: 0 0 43px;
    }

    .header-actions {
        width: 100%;

        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 7px;

        justify-content: stretch;
    }

    .header-actions > * {
        min-width: 0;
    }

    .header-badge,
    .site-visit-badge {
        display: none !important;
    }

    .auth-header-button,
    .b9-my-events-btn,
    .admin-reports-button {
        width: 100%;
        min-width: 0;
        min-height: 44px;

        padding: 8px 9px;

        justify-content: center;

        border-radius: 10px;

        font-size: 11px;

        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    /* If only one header action is visible, allow it to span neatly. */

    .header-actions > :only-child {
        grid-column: 1 / -1;
    }


    /* MAIN PANELS */

    .content {
        width: calc(100% - 16px);

        padding-top: 12px;
        padding-bottom: 22px;
    }

    .hero,
    .workspace {
        gap: 12px;
    }

    .hero {
        margin-bottom: 12px;
    }

    .hero-copy,
    .weather-panel,
    .side-panel,
    .map-panel,
    .events-section {
        padding: 15px;

        border-radius: 15px;
    }

    .hero h2 {
        margin-top: 8px;

        font-size: clamp(30px, 9vw, 38px);
        line-height: 1.08;
    }

    .hero p {
        font-size: 13px;
        line-height: 1.58;
    }


    /* WEATHER */

    .weather-current {
        align-items: flex-start;

        gap: 10px;

        padding: 12px;
    }

    .weather-temp {
        font-size: 34px;
    }

    .weather-meta {
        width: 100%;

        margin-left: 0;

        font-size: 11px;
    }

    .weather-forecast {
        gap: 5px;
    }

    .forecast-day {
        min-width: 0;

        padding: 7px 2px;

        font-size: 9px;
    }


    /* CONTRIBUTION / EVENT FORM */

    .main-button,
    .secondary-button,
    .filter-action-button,
    .fm-viewing-select-btn,
    .fm-viewing-clear-btn,
    .fm-show-viewing-btn {
        min-height: 46px;
    }

    .event-form input,
    .event-form select,
    .event-form textarea,
    .report-box select,
    .auth-box input {
        font-size: 16px;
    }

    .display-phase {
        padding: 12px 10px;
    }

    .phase-time-grid,
    .phase-time-box {
        grid-template-columns: 1fr;
    }

    .fm-viewing-section {
        padding: 13px;
    }

    .fm-viewing-select-btn,
    .fm-viewing-clear-btn,
    .fm-show-viewing-btn {
        width: 100%;

        margin-left: 0;
        margin-right: 0;
    }


    /* MAP */

    .map-heading {
        gap: 10px;
    }

    .map-controls-top {
        width: 100%;

        grid-template-columns: 1fr;
        gap: 7px;
    }

    .location-button,
    .pet-toggle {
        width: 100%;
        min-height: 46px;

        justify-content: center;
    }

    .map-status {
        grid-column: 1;

        width: 100%;

        padding-top: 2px;

        line-height: 1.4;
    }

    .map-frame {
        padding: 3px;
        border-radius: 12px;
    }

    #map {
        height: min(62vh, 520px);
        min-height: 390px;

        border-radius: 9px;
    }

    .noise-legend {
        top: 9px;
        right: 9px;

        width: min(170px, calc(100% - 18px));

        padding: 10px;
    }

    .fm-viewing-map-notice {
        top: 9px;

        width: calc(100% - 18px);

        padding: 10px 11px;

        font-size: 11px;
    }


    /* NEAR ME */

    .near-me-panel {
        padding: 13px;
    }

    .near-me-heading {
        gap: 8px;
    }

    .near-me-item {
        padding: 11px;
    }


    /* NEXT DISPLAY */

    .next-display-panel {
        grid-template-columns: auto minmax(0, 1fr);

        gap: 10px;

        padding: 13px;
    }

    .next-display-content {
        min-width: 0;
    }

    .next-display-content strong,
    .next-display-content > span:last-child {
        overflow-wrap: anywhere;
    }

    .next-display-countdown {
        grid-column: 1 / -1;

        min-width: 0;
        width: 100%;

        font-size: 14px;
    }


    /* EVENT FILTERS */

    .events-section {
        margin-top: 12px;
    }

    .events-heading {
        gap: 10px;
    }

    #filters {
        width: 100%;

        grid-template-columns: repeat(3, minmax(0, 1fr));

        gap: 5px;
    }

    #filters button {
        min-width: 0;
        min-height: 46px;

        padding: 7px 4px;

        font-size: 11px;
    }

    .event-filter-panel {
        display: grid;
        grid-template-columns: 1fr;

        gap: 9px;

        padding: 11px;
    }

    .event-filter-field {
        width: 100%;
        min-width: 0;
    }

    .filter-action-button {
        width: 100%;
    }


    /* EVENT CARDS */

    .event-card {
        padding: 14px 12px;
    }

    .event-card-title {
        padding-right: 2px;

        font-size: 16px;
    }

    .event-card-location,
    .event-card-date {
        font-size: 12px;
    }

    .event-community-row {
        align-items: stretch;
        flex-direction: column;
    }

    .attending-btn,
    .event-community-row button {
        width: 100%;
        min-height: 44px;
    }

    .event-card .event-actions {
        width: 100%;

        display: grid;
        grid-template-columns: 1fr;

        gap: 7px;
    }

    .event-card .event-actions button,
    .event-card > .owner-report-alert {
        width: 100%;

        min-height: 46px;
        height: auto;

        margin-left: 0;
    }


    /* ALL MODALS — MOBILE SAFE */

    .auth-modal,
    .attendance-modal,
    .report-modal,
    .signout-modal,
    .resolve-reports-modal,
    .b9-modal,
    .admin-reports-modal {
        align-items: flex-start;

        overflow-y: auto;

        padding:
            max(10px, env(safe-area-inset-top))
            9px
            max(12px, env(safe-area-inset-bottom));
    }

    .auth-box,
    .attendance-box,
    .report-box,
    .signout-box,
    .resolve-reports-box,
    .b9-modal-box,
    .admin-reports-panel {
        width: 100%;
        max-width: 100%;

        max-height: none;

        margin: auto;

        padding: 22px 16px;

        border-radius: 15px;

        overflow-wrap: anywhere;
    }

    .b9-modal-box,
    .admin-reports-panel {
        overflow-y: visible;
    }

    .auth-close,
    .attendance-close,
    .report-close,
    .b9-modal-close,
    .admin-close {
        width: 40px;
        height: 40px;

        top: 10px;
        right: 10px;
    }

    .auth-box h2,
    .attendance-box h2,
    .report-box h2,
    .resolve-reports-box h2 {
        padding-right: 38px;

        font-size: 22px;
    }

    .b9-details-title,
    .b9-my-events-heading h2,
    .admin-heading h2 {
        padding-right: 38px;

        font-size: 23px !important;
    }

    .b9-detail-meta-grid {
        grid-template-columns: 1fr;
    }

    .b9-detail-actions {
        display: grid;
        grid-template-columns: 1fr;

        gap: 7px;
    }

    .b9-detail-actions button {
        width: 100%;
        min-height: 46px;
    }

    .resolve-reports-actions {
        grid-template-columns: 1fr;
    }

    .resolve-reports-confirm,
    .resolve-reports-cancel {
        min-height: 48px;
    }

    .admin-breakdown {
        grid-template-columns: 1fr 1fr !important;
    }

    .admin-report-actions {
        grid-template-columns: 1fr;
    }

    .admin-report-actions button {
        width: 100%;
        min-height: 46px !important;
    }


    /* NOTIFICATIONS */

    .notification {
        padding:
            max(10px, env(safe-area-inset-top))
            10px
            max(10px, env(safe-area-inset-bottom));
    }

    .notification-box {
        width: 100%;
        max-width: 390px;

        padding: 20px 16px;
    }

    .notification-box button {
        min-width: 110px;
        min-height: 44px;
    }


    /* FOOTER */

    .app-footer {
        align-items: flex-start;

        gap: 5px;

        padding-bottom: env(safe-area-inset-bottom);
    }
}


/* =========================================================
   VERY SMALL PHONES
========================================================= */

@media (max-width: 420px) {

    .header-actions {
        grid-template-columns: 1fr;
    }

    .header-actions > * {
        grid-column: 1;
    }

    .hero h2 {
        font-size: 29px;
    }

    .weather-forecast {
        grid-template-columns: repeat(5, minmax(52px, 1fr));

        overflow-x: auto;

        padding-bottom: 3px;
    }

    #filters {
        grid-template-columns: 1fr;
    }

    #filters button {
        min-height: 44px;
    }

    #map {
        min-height: 360px;
        height: 58vh;
    }

    .admin-breakdown {
        grid-template-columns: 1fr !important;
    }

    .attendance-stepper {
        grid-template-columns: 48px minmax(0, 1fr) 48px;
        gap: 8px;
    }
}


/* =========================================================
   TOUCH / ACCESSIBILITY
========================================================= */

@media (hover: none) and (pointer: coarse) {

    button,
    select,
    input[type="date"],
    input[type="text"],
    input[type="email"],
    input[type="password"] {
        min-height: 44px;
    }

    .watch-event-btn {
        width: 40px;
        height: 40px;
    }
}


/* Reduce animation for users who request it. */

@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;
    }
}

/* =========================================================
   FINAL MAP POPUP / NEAR-ME MOBILE POLISH
========================================================= */

.leaflet-popup {
    max-width: calc(100vw - 28px);
}

.leaflet-popup-content-wrapper {
    max-width: 340px;
}

.leaflet-popup-content {
    width: auto !important;
    max-width: 310px;
    max-height: min(430px, 56vh);

    overflow-y: auto;
    overflow-x: hidden;

    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;

    scrollbar-width: thin;
}

.leaflet-popup-content::-webkit-scrollbar {
    width: 6px;
}

.leaflet-popup-content::-webkit-scrollbar-thumb {
    border-radius: 999px;
    background: rgba(255,255,255,0.22);
}

.leaflet-popup-content::-webkit-scrollbar-track {
    background: transparent;
}

@media (max-width: 650px) {

    .leaflet-popup {
        max-width: calc(100vw - 24px) !important;
    }

    .leaflet-popup-content-wrapper {
        width: min(310px, calc(100vw - 52px));
        max-width: calc(100vw - 52px);
    }

    .leaflet-popup-content {
        min-width: 0 !important;
        width: auto !important;
        max-width: 100% !important;
        max-height: min(330px, 44vh);

        padding:
            14px
            15px
            16px;

        font-size: 12px !important;
        line-height: 1.55 !important;
    }

    .leaflet-popup-content strong:first-child {
        padding-right: 30px;
        font-size: 15px !important;
        line-height: 1.3;
    }

    .leaflet-container
    .leaflet-popup-close-button {
        width: 34px;
        height: 34px;

        top: 5px;
        right: 5px;
    }

    .near-me-view {
        min-height: 48px !important;
        font-size: 13px !important;
    }
}

@media (max-width: 420px) {

    .leaflet-popup-content-wrapper {
        width: min(292px, calc(100vw - 44px));
        max-width: calc(100vw - 44px);
    }

    .leaflet-popup-content {
        max-height: min(300px, 42vh);
    }
}

/* =========================================================
   FINAL POPUP TEXT VISIBILITY SAFETY
   Ensures long multi-display event cards never clip content.
========================================================= */

.leaflet-popup-content,
.leaflet-popup-content * {
    box-sizing: border-box;
}

.fm-popup-meta,
.fm-popup-display,
.fm-popup-trust,
.fm-popup-warning {
    max-width: 100%;

    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
}

.leaflet-popup-content {
    padding-right: 18px !important;
    padding-bottom: 18px !important;
}

@media (max-width: 650px) {

    .leaflet-popup-content {
        max-height: min(340px, 46vh) !important;

        overflow-y: auto !important;
        overflow-x: hidden !important;

        padding:
            14px
            18px
            18px
            15px
            !important;
    }

    .fm-popup-display,
    .fm-popup-trust,
    .fm-popup-warning {
        line-height: 1.5;
    }

    .leaflet-popup-content::after {
        content: "";

        display: block;

        height: 2px;
    }
}

@media (max-width: 420px) {

    .leaflet-popup-content {
        max-height: min(315px, 44vh) !important;
    }
}

/* =========================================================
   FINAL MOBILE MAP PRIORITY + SOUND LEGEND
   Mobile order:
   Hero intro -> Map -> Weather -> Contribute -> Events
========================================================= */

@media (max-width: 650px) {

    /* Flatten the two desktop layout wrappers so their children
       can be reordered naturally on the mobile main column. */

    main.content {
        display: flex;
        flex-direction: column;
    }

    .hero,
    .workspace {
        display: contents;
    }

    .hero-copy {
        order: 1;

        margin-bottom: 12px;
    }

    .map-panel {
        order: 2;

        margin-bottom: 12px;
    }

    .weather-panel {
        order: 3;

        margin-bottom: 12px;
    }

    .side-panel {
        order: 4;

        margin-bottom: 12px;
    }

    .events-section {
        order: 5;
    }

    .app-footer {
        order: 6;
    }


    /* -----------------------------------------------------
       SOUND BLAST LEGEND
       Do not cover the map on phones.
       It becomes a compact panel directly below the map.
    ----------------------------------------------------- */

    .map-frame {
        overflow: visible;
    }

    .noise-legend {
        position: static !important;

        width: 100% !important;
        max-width: none !important;

        margin-top: 7px;

        padding:
            9px
            11px
            !important;

        display: grid;

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

        gap:
            5px
            10px;

        border-radius: 9px;

        font-size: 10px !important;

        box-shadow: none;
    }

    .noise-legend.hidden {
        display: none !important;
    }

    .noise-legend > strong {
        grid-column: 1 / -1;

        margin-bottom: 2px;

        font-size: 11px !important;
    }

    .noise-legend > div {
        min-width: 0;

        line-height: 1.3;
    }

    .noise-legend .legend-divider {
        grid-column: 1 / -1;

        width: 100%;
        height: 1px;

        margin:
            2px
            0;

        border: 0;

        background:
            rgba(255,255,255,0.08);
    }

    .noise-legend .legend-divider + div {
        grid-column: 1 / -1;
    }


    /* Keep the actual map visually dominant now that it is
       the first functional section on mobile. */

    #map {
        min-height: 410px;
        height: 58vh;
    }

}


@media (max-width: 420px) {

    .noise-legend {
        grid-template-columns: 1fr 1fr;

        padding:
            8px
            9px
            !important;
    }

    #map {
        min-height: 380px;
        height: 56vh;
    }

}

/* =========================================================
   FINAL LAUNCH UI — DARK DROPDOWNS / ALERTS / ADMIN LOGIN /
   SOUND FLOW INSIDE LEGEND
========================================================= */


/* ---------------------------------------------------------
   DARK SELECT / DROPDOWN CONTROLS
   color-scheme helps Chrome/Edge/Android use a dark native
   option popup where the browser allows it.
--------------------------------------------------------- */

select,
.event-form select,
.event-filter-field select,
.report-box select,
.phase-type,
.phase-hour,
.phase-minute {
    color-scheme: dark;

    background-color: #202846 !important;
    color: #ffffff !important;

    border-color:
        rgba(255,255,255,0.12);
}

select option,
.event-form select option,
.event-filter-field option,
.report-box select option,
.phase-type option,
.phase-hour option,
.phase-minute option {
    color-scheme: dark;

    background-color: #202846 !important;
    color: #ffffff !important;
}

select:focus {
    border-color: #fbbf24 !important;

    outline: none;
}


/* ---------------------------------------------------------
   HEADER — ALERT + ADMIN LOGIN
--------------------------------------------------------- */

.firework-alerts-button,
.admin-login-button {
    min-height: 40px;

    padding:
        8px
        12px;

    border:
        1px solid
        rgba(255,255,255,0.13);

    border-radius: 10px;

    background:
        rgba(255,255,255,0.055);

    color: #dbeafe;

    font-family: inherit;
    font-size: 11px;
    font-weight: 800;

    cursor: pointer;
}

.firework-alerts-button:hover,
.admin-login-button:hover {
    background:
        rgba(255,255,255,0.10);
}

.firework-alerts-button.active {
    border-color:
        rgba(34,197,94,0.38);

    background:
        rgba(34,197,94,0.11);

    color: #bbf7d0;
}

.admin-login-button {
    border-color:
        rgba(251,191,36,0.22);

    color: #fde68a;
}


/* ---------------------------------------------------------
   FIREWORK ALERTS MODAL
--------------------------------------------------------- */

.firework-alerts-modal {
    display: none;

    position: fixed;
    inset: 0;

    z-index: 16500;

    align-items: center;
    justify-content: center;

    padding: 20px;

    background:
        rgba(3,6,18,0.86);

    backdrop-filter:
        blur(8px);
}

.firework-alerts-modal.open {
    display: flex;
}

.firework-alerts-box {
    position: relative;

    width:
        min(
            440px,
            100%
        );

    padding:
        28px;

    border:
        1px solid
        rgba(255,255,255,0.11);

    border-radius: 18px;

    background:
        linear-gradient(
            145deg,
            #17203f,
            #10172e
        );

    box-shadow:
        0
        25px
        70px
        rgba(0,0,0,0.52);
}

.firework-alerts-box h2 {
    margin:
        7px
        38px
        8px
        0;

    color: #ffffff;

    font-size: 24px;
    line-height: 1.25;
}

.firework-alerts-description {
    margin: 0;

    color: #c1cada;

    font-size: 13px;
    line-height: 1.6;
}

.firework-alerts-note {
    margin-top: 15px;

    padding:
        11px
        12px;

    border:
        1px solid
        rgba(96,165,250,0.14);

    border-radius: 9px;

    background:
        rgba(59,130,246,0.055);

    color: #b9c6da;

    font-size: 11px;
    line-height: 1.55;
}

.firework-alerts-toggle {
    width: 100%;

    min-height: 46px;

    margin-top: 18px;
}

.firework-alerts-close {
    position: absolute;

    top: 13px;
    right: 13px;

    width: 36px;
    height: 36px;

    border: 0;
    border-radius: 50%;

    background:
        rgba(255,255,255,0.06);

    color: #cbd5e1;

    font-size: 17px;

    cursor: pointer;
}


/* ---------------------------------------------------------
   SOUND FLOW — FIRST ROW INSIDE PET NOISE LEGEND
--------------------------------------------------------- */

.noise-legend
.wind-noise-indicator {
    position: static !important;

    z-index: auto;

    width: 100%;

    display: flex;

    align-items: center;

    gap: 9px;

    margin:
        0
        0
        9px;

    padding:
        8px
        9px;

    border:
        1px solid
        rgba(125,211,252,0.20);

    border-radius: 9px;

    background:
        rgba(14,28,58,0.72);

    box-shadow: none;

    pointer-events: none;
}

.noise-legend
.wind-noise-indicator.hidden {
    display: none;
}

.noise-legend
.wind-noise-indicator
.wind-arrow {
    flex:
        0
        0
        29px;

    width: 29px;
    height: 29px;
}

.noise-legend
.wind-noise-indicator
strong {
    display: block;

    margin: 0;

    color: #dbeafe;

    font-size: 10px;
}

.noise-legend
.wind-noise-indicator
span {
    display: block;

    margin-top: 1px;

    color: #a9c9df;

    font-size: 9px;
}


/* ---------------------------------------------------------
   MOBILE
--------------------------------------------------------- */

@media (max-width: 650px) {

    .firework-alerts-button,
    .admin-login-button {
        width: 100%;

        min-width: 0;
        min-height: 44px;

        padding:
            8px
            9px;

        justify-content: center;

        font-size: 11px;
    }

    .firework-alerts-modal {
        align-items: flex-start;

        overflow-y: auto;

        padding:
            max(10px, env(safe-area-inset-top))
            9px
            max(12px, env(safe-area-inset-bottom));
    }

    .firework-alerts-box {
        width: 100%;
        max-width: 100%;

        margin: auto;

        padding:
            22px
            16px;

        border-radius: 15px;
    }

    .firework-alerts-box h2 {
        font-size: 22px;
    }

    .noise-legend
    .wind-noise-indicator {
        grid-column: 1 / -1;

        margin-bottom: 3px;
    }

}


@media (max-width: 420px) {

    .firework-alerts-button,
    .admin-login-button {
        grid-column: 1;
    }

}

/* =========================================================
   ADMIN LOGIN INSIDE SIGN-IN WINDOW
========================================================= */

.auth-admin-switch {
    width: 100%;

    min-height: 44px;

    margin-top: 9px;

    border:
        1px solid
        rgba(251,191,36,0.24);

    border-radius: 9px;

    background:
        rgba(251,191,36,0.055);

    color: #fde68a;

    font-family: inherit;
    font-size: 11px;
    font-weight: 800;

    cursor: pointer;
}

.auth-admin-switch:hover {
    background:
        rgba(251,191,36,0.10);

    border-color:
        rgba(251,191,36,0.38);
}

@media (max-width: 650px) {

    .auth-admin-switch {
        min-height: 46px;

        font-size: 12px;
    }

}

/* =========================================================
   ADMINISTRATION — REPORTS + ADMIN CONTACT DIRECTORY
========================================================= */

.admin-tabs {
    display: grid;
    grid-template-columns:
        repeat(
            2,
            minmax(0, 1fr)
        );

    gap: 7px;

    margin:
        17px
        0
        14px;

    padding: 5px;

    border:
        1px solid
        rgba(255,255,255,0.08);

    border-radius: 11px;

    background:
        rgba(255,255,255,0.025);
}

.admin-tab {
    min-height: 42px;

    border: 0;
    border-radius: 8px;

    background: transparent;

    color: #9aa9bd;

    font-family: inherit;
    font-size: 11px;
    font-weight: 800;

    cursor: pointer;
}

.admin-tab.active {
    background:
        rgba(59,130,246,0.14);

    color: #dbeafe;

    box-shadow:
        inset
        0
        0
        0
        1px
        rgba(96,165,250,0.18);
}

.admin-tab-panel {
    display: none;
}

.admin-tab-panel.active {
    display: block;
}


/* ---------------------------------------------------------
   CONTACT DIRECTORY
--------------------------------------------------------- */

.admin-contacts-toolbar {
    display: flex;

    align-items: center;
    justify-content: space-between;

    gap: 12px;

    margin-bottom: 12px;
}

.admin-contacts-toolbar > div {
    min-width: 0;
}

.admin-contacts-toolbar strong {
    display: block;

    color: #ffffff;

    font-size: 14px;
}

.admin-contacts-toolbar span {
    display: block;

    margin-top: 3px;

    color: #94a3b8;

    font-size: 10px;
    line-height: 1.45;
}

.admin-edit-profile-button {
    flex: 0 0 auto;

    min-height: 40px;

    padding:
        8px
        11px;

    border:
        1px solid
        rgba(251,191,36,0.22);

    border-radius: 8px;

    background:
        rgba(251,191,36,0.06);

    color: #fde68a;

    font-family: inherit;
    font-size: 10px;
    font-weight: 800;

    cursor: pointer;
}

.admin-contacts-list {
    display: grid;

    grid-template-columns:
        repeat(
            2,
            minmax(0, 1fr)
        );

    gap: 10px;

    margin-top: 11px;
}

.admin-contact-card {
    min-width: 0;

    padding: 14px;

    border:
        1px solid
        rgba(255,255,255,0.08);

    border-radius: 11px;

    background:
        rgba(255,255,255,0.028);
}

.admin-contact-card.inactive {
    opacity: 0.58;
}

.admin-contact-top {
    display: flex;

    align-items: flex-start;
    justify-content: space-between;

    gap: 9px;
}

.admin-contact-identity {
    min-width: 0;
}

.admin-contact-identity strong {
    display: block;

    color: #ffffff;

    font-size: 14px;

    overflow-wrap: anywhere;
}

.admin-contact-identity span {
    display: block;

    margin-top: 3px;

    color: #9fb0c6;

    font-size: 10px;

    overflow-wrap: anywhere;
}

.admin-contact-status {
    flex: 0 0 auto;

    padding:
        4px
        7px;

    border:
        1px solid
        rgba(34,197,94,0.22);

    border-radius: 999px;

    background:
        rgba(34,197,94,0.08);

    color: #bbf7d0;

    font-size: 9px;
    font-weight: 800;
}

.admin-contact-status.inactive {
    border-color:
        rgba(148,163,184,0.18);

    background:
        rgba(148,163,184,0.07);

    color: #cbd5e1;
}

.admin-contact-details {
    display: grid;

    gap: 7px;

    margin-top: 12px;

    padding-top: 11px;

    border-top:
        1px solid
        rgba(255,255,255,0.06);
}

.admin-contact-details > div {
    display: grid;

    grid-template-columns:
        minmax(82px, auto)
        minmax(0, 1fr);

    gap: 8px;

    align-items: start;
}

.admin-contact-details span {
    color: #8494aa;

    font-size: 9px;
}

.admin-contact-details strong {
    min-width: 0;

    color: #dce5f3;

    font-size: 10px;
    font-weight: 700;

    overflow-wrap: anywhere;
}

.admin-contact-notes {
    margin-top: 10px;

    padding:
        8px
        9px;

    border-radius: 7px;

    background:
        rgba(255,255,255,0.025);

    color: #9eacc0;

    font-size: 9px;
    line-height: 1.5;

    overflow-wrap: anywhere;
}


/* ---------------------------------------------------------
   MY ADMIN PROFILE MODAL
--------------------------------------------------------- */

.admin-profile-modal {
    display: none;

    position: fixed;
    inset: 0;

    z-index: 18000;

    align-items: center;
    justify-content: center;

    padding: 20px;

    background:
        rgba(3,6,18,0.88);

    backdrop-filter:
        blur(8px);
}

.admin-profile-modal.open {
    display: flex;
}

.admin-profile-box {
    position: relative;

    width:
        min(
            470px,
            100%
        );

    max-height:
        min(
            760px,
            calc(100vh - 36px)
        );

    overflow-y: auto;

    padding: 27px;

    border:
        1px solid
        rgba(255,255,255,0.11);

    border-radius: 17px;

    background:
        linear-gradient(
            145deg,
            #17203f,
            #10172e
        );

    box-shadow:
        0
        28px
        75px
        rgba(0,0,0,0.55);
}

.admin-profile-box h2 {
    margin:
        7px
        36px
        7px
        0;

    color: #ffffff;

    font-size: 23px;
}

.admin-profile-box > p {
    margin:
        0
        0
        17px;

    color: #aebbd0;

    font-size: 11px;
    line-height: 1.55;
}

.admin-profile-box label {
    display: block;

    margin:
        11px
        0
        6px;

    color: #d6deeb;

    font-size: 11px;
    font-weight: 700;
}

.admin-profile-box input {
    width: 100%;

    min-height: 44px;

    padding:
        10px
        11px;

    border:
        1px solid
        rgba(255,255,255,0.10);

    border-radius: 8px;

    background:
        #202846;

    color: #ffffff;

    font-family: inherit;
    font-size: 13px;

    box-sizing: border-box;
}

.admin-profile-box input:focus {
    border-color:
        rgba(251,191,36,0.55);

    outline: none;
}

.admin-profile-close {
    position: absolute;

    top: 12px;
    right: 12px;

    width: 36px;
    height: 36px;

    border: 0;
    border-radius: 50%;

    background:
        rgba(255,255,255,0.06);

    color: #cbd5e1;

    font-size: 17px;

    cursor: pointer;
}

.admin-profile-message {
    min-height: 18px;

    margin:
        10px
        0
        0;

    color: #fca5a5;

    font-size: 10px;
}

.admin-profile-message.success {
    color: #86efac;
}

.admin-profile-save {
    width: 100%;

    min-height: 46px;

    margin-top: 6px;
}


/* ---------------------------------------------------------
   ADMIN MOBILE
--------------------------------------------------------- */

@media (max-width: 650px) {

    .admin-tabs {
        grid-template-columns: 1fr 1fr;
    }

    .admin-tab {
        min-height: 46px;

        padding:
            7px
            5px;

        font-size: 10px;
    }

    .admin-contacts-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .admin-edit-profile-button {
        width: 100%;

        min-height: 44px;
    }

    .admin-contacts-list {
        grid-template-columns: 1fr;
    }

    .admin-profile-modal {
        align-items: flex-start;

        overflow-y: auto;

        padding:
            max(10px, env(safe-area-inset-top))
            9px
            max(12px, env(safe-area-inset-bottom));
    }

    .admin-profile-box {
        width: 100%;
        max-width: 100%;
        max-height: none;

        margin: auto;

        padding:
            22px
            16px;

        border-radius: 15px;
    }

    .admin-profile-box h2 {
        font-size: 21px;
    }

    .admin-profile-box input {
        min-height: 46px;

        font-size: 16px;
    }

}

/* =========================================================
   FINAL COMPACT FILTER ROW + ADMIN CONTACT EMAIL
========================================================= */

.admin-contact-email-link {
    min-width: 0;

    color: #93c5fd;

    font-size: 10px;
    font-weight: 700;

    text-decoration: none;

    overflow-wrap: anywhere;
}

.admin-contact-email-link:hover,
.admin-contact-email-link:focus {
    color: #dbeafe;

    text-decoration: underline;
}


/* Keep Today / Tomorrow / Upcoming beside each other
   directly below Next Display, including on phones. */

#filters {
    display: grid !important;

    grid-template-columns:
        repeat(
            3,
            minmax(0, 1fr)
        )
        !important;

    gap: 6px !important;

    width: min(430px, 100%);
}

#filters button {
    min-width: 0 !important;

    min-height: 42px !important;

    padding:
        7px
        6px
        !important;

    white-space: nowrap;

    font-size: 11px !important;
}

@media (max-width: 650px) {

    .events-heading {
        gap: 8px !important;
    }

    #filters {
        width: 100%;

        grid-template-columns:
            repeat(
                3,
                minmax(0, 1fr)
            )
            !important;
    }

    #filters button {
        min-height: 40px !important;

        padding:
            6px
            4px
            !important;

        border-radius: 8px;

        font-size: 10px !important;
    }

    .admin-contact-details > div {
        grid-template-columns:
            minmax(72px, 84px)
            minmax(0, 1fr);
    }

    .admin-contact-email-link {
        font-size: 10px;
    }
}

@media (max-width: 380px) {

    #filters {
        gap: 4px !important;
    }

    #filters button {
        padding:
            6px
            2px
            !important;

        font-size: 9px !important;
    }
}



/* =========================================================
   FIREWORKS MALTA — HELP / HOW TO USE
========================================================= */

.fm-help-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;

    min-height: 42px;
    padding: 9px 14px;

    border: 1px solid rgba(255,255,255,.14);
    border-radius: 12px;

    background: rgba(255,255,255,.055);
    color: #eef2ff;

    font: inherit;
    font-size: 13px;
    font-weight: 800;

    cursor: pointer;
}

.fm-help-button > span {
    display: inline-grid;
    place-items: center;

    width: 22px;
    height: 22px;

    border: 1px solid rgba(255,255,255,.22);
    border-radius: 50%;

    color: #fbbf24;
}

.fm-help-button:hover,
.fm-help-button:focus {
    background: rgba(255,255,255,.09);
}

.fm-help-button-floating {
    position: fixed;
    z-index: 8500;
    right: 16px;
    top: 16px;
}

.fm-help-modal {
    position: fixed;
    z-index: 12000;
    inset: 0;

    display: none;
}

.fm-help-modal.is-open {
    display: block;
}

.fm-help-backdrop {
    position: absolute;
    inset: 0;

    background: rgba(2, 6, 23, .82);
    backdrop-filter: blur(8px);
}

.fm-help-panel {
    position: absolute;
    top: 50%;
    left: 50%;

    width: min(760px, calc(100% - 28px));
    max-height: min(820px, calc(100dvh - 28px));

    padding: 28px;

    overflow-y: auto;
    overscroll-behavior: contain;

    transform: translate(-50%, -50%);

    border: 1px solid rgba(96, 165, 250, .25);
    border-radius: 24px;

    background:
        linear-gradient(
            145deg,
            rgba(20, 31, 70, .99),
            rgba(16, 23, 54, .99)
        );

    color: #f8fafc;

    box-shadow: 0 30px 90px rgba(0,0,0,.55);
}

.fm-help-close {
    position: absolute;
    top: 16px;
    right: 16px;

    display: grid;
    place-items: center;

    width: 42px;
    height: 42px;

    border: 1px solid rgba(255,255,255,.12);
    border-radius: 50%;

    background: rgba(255,255,255,.055);
    color: #cbd5e1;

    font-size: 28px;
    line-height: 1;

    cursor: pointer;
}

.fm-help-kicker {
    margin: 0 52px 8px 0;

    color: #fbbf24;

    font-size: 12px;
    font-weight: 900;
    letter-spacing: .16em;
}

.fm-help-panel h2 {
    margin: 0 52px 8px 0;

    color: #ffffff;

    font-size: clamp(26px, 4vw, 38px);
    line-height: 1.08;
}

.fm-help-intro {
    max-width: 620px;
    margin: 0 0 20px;

    color: #b8c2dc;

    font-size: 15px;
    line-height: 1.55;
}

.fm-help-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.fm-help-item {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 10px;

    padding: 14px;

    border: 1px solid rgba(255,255,255,.075);
    border-radius: 15px;

    background: rgba(255,255,255,.035);
}

.fm-help-icon {
    display: grid;
    place-items: center;

    width: 34px;
    height: 34px;

    border-radius: 10px;

    background: rgba(59,130,246,.12);

    font-size: 18px;
}

.fm-help-item strong {
    display: block;

    margin: 1px 0 3px;

    color: #ffffff;

    font-size: 13px;
}

.fm-help-item p {
    margin: 0;

    color: #aeb8d2;

    font-size: 11px;
    line-height: 1.45;
}

.fm-help-note {
    margin-top: 14px;
    padding: 13px 14px;

    border: 1px solid rgba(251, 191, 36, .18);
    border-radius: 14px;

    background: rgba(251, 191, 36, .055);
    color: #cbd5e1;

    font-size: 11px;
    line-height: 1.5;
}

.fm-help-done {
    width: 100%;
    min-height: 46px;
    margin-top: 14px;

    border: 0;
    border-radius: 13px;

    background: linear-gradient(90deg, #fbbf24, #f97316);
    color: #111827;

    font: inherit;
    font-size: 13px;
    font-weight: 900;

    cursor: pointer;
}

body.fm-help-open {
    overflow: hidden;
}

.fm-first-visit {
    position: fixed;
    z-index: 11000;
    right: 18px;
    bottom: 18px;

    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 12px;

    width: min(430px, calc(100% - 28px));
    padding: 13px 13px 13px 16px;

    border: 1px solid rgba(96, 165, 250, .28);
    border-radius: 16px;

    background: rgba(15, 27, 62, .97);
    color: #f8fafc;

    box-shadow: 0 18px 50px rgba(0,0,0,.42);
}

.fm-first-visit strong,
.fm-first-visit span {
    display: block;
}

.fm-first-visit strong {
    margin-bottom: 2px;

    font-size: 13px;
}

.fm-first-visit span {
    color: #aeb8d2;

    font-size: 10px;
}

.fm-first-visit-open {
    min-height: 36px;
    padding: 7px 11px;

    border: 0;
    border-radius: 10px;

    background: #fbbf24;
    color: #111827;

    font: inherit;
    font-size: 10px;
    font-weight: 900;

    cursor: pointer;
}

.fm-first-visit-dismiss {
    width: 32px;
    height: 32px;

    border: 0;
    background: transparent;
    color: #94a3b8;

    font-size: 22px;

    cursor: pointer;
}

@media (max-width: 650px) {

    .fm-help-button {
        min-height: 40px;
        padding: 8px 11px;

        font-size: 11px;
    }

    .fm-help-button > span {
        width: 20px;
        height: 20px;
    }

    .fm-help-panel {
        width: calc(100% - 18px);
        max-height: calc(100dvh - 18px);

        padding: 20px 16px 18px;

        border-radius: 20px;
    }

    .fm-help-close {
        top: 12px;
        right: 12px;

        width: 38px;
        height: 38px;
    }

    .fm-help-kicker {
        margin-right: 44px;

        font-size: 10px;
    }

    .fm-help-panel h2 {
        margin-right: 44px;

        font-size: 27px;
    }

    .fm-help-intro {
        margin-bottom: 14px;

        font-size: 12px;
    }

    .fm-help-grid {
        grid-template-columns: 1fr;
        gap: 7px;
    }

    .fm-help-item {
        grid-template-columns: 34px minmax(0, 1fr);
        gap: 9px;

        padding: 11px;
    }

    .fm-help-icon {
        width: 31px;
        height: 31px;

        font-size: 16px;
    }

    .fm-help-item strong {
        font-size: 12px;
    }

    .fm-help-item p,
    .fm-help-note {
        font-size: 10px;
    }

    .fm-first-visit {
        right: 10px;
        bottom: 12px;

        width: calc(100% - 20px);
    }
}



/* =========================================================
   FIREWORKS MALTA — MIDNIGHT + GOLD COLOUR PASS
   Visual-only override. Layout and functionality unchanged.
========================================================= */

:root {
    --fm-night: #070B18;
    --fm-night-soft: #0B1124;
    --fm-card: #101831;
    --fm-card-raised: #17213F;
    --fm-border: #29375D;
    --fm-border-soft: rgba(105, 126, 173, .24);

    --fm-gold: #FFB21C;
    --fm-orange: #FF7A18;
    --fm-coral: #F04F5F;
    --fm-green: #35D07F;

    --fm-text: #F7F8FC;
    --fm-muted: #AAB4CE;
}

/* Main app atmosphere */
html,
body {
    background:
        radial-gradient(
            circle at 82% 8%,
            rgba(255, 122, 24, .07),
            transparent 28%
        ),
        radial-gradient(
            circle at 8% 42%,
            rgba(41, 55, 93, .28),
            transparent 32%
        ),
        var(--fm-night) !important;

    color: var(--fm-text);
}

/* Replace the strong purple wash with midnight navy. */
body::before,
body::after {
    opacity: .28 !important;
    filter: saturate(.65) !important;
}

/* Broad app panels/cards */
.hero,
.weather-card,
.weather-section,
.add-event-section,
.map-section,
.near-me-section,
.events-section,
.next-display,
.next-display-card,
.event-card,
.filters-panel,
.filter-panel,
.auth-modal-content,
.modal-content,
.admin-modal-content,
.admin-panel,
.admin-contact-card,
.fm-help-panel {
    background-color: var(--fm-card) !important;
    border-color: var(--fm-border-soft) !important;
}

/* Nested / raised surfaces */
.event-display,
.display-item,
.weather-current,
.weather-day,
.near-me-card,
.near-me-event,
.trust-panel,
.event-stats,
.admin-contact-details,
.fm-help-item {
    background-color: var(--fm-card-raised) !important;
    border-color: var(--fm-border-soft) !important;
}

/* Primary text */
h1,
h2,
h3,
h4,
.event-card strong,
.next-display strong,
.fm-help-panel h2,
.fm-help-item strong {
    color: var(--fm-text) !important;
}

/* Secondary text */
p,
.subtitle,
.event-meta,
.weather-meta,
.fm-help-intro,
.fm-help-item p,
.fm-help-note {
    color: var(--fm-muted);
}

/* Firework identity / section labels */
.eyebrow,
.section-label,
.hero-kicker,
.weather-label,
.fm-help-kicker {
    color: var(--fm-gold) !important;
}

/* Main action buttons and active filters */
button.active,
.filter-btn.active,
#filters button.active,
.primary-btn,
.add-event-btn,
.fm-help-done {
    background:
        linear-gradient(
            100deg,
            var(--fm-gold),
            var(--fm-orange)
        ) !important;

    border-color: transparent !important;
    color: #111827 !important;

    box-shadow:
        0 8px 26px rgba(255, 122, 24, .13) !important;
}

/* Normal buttons stay navy instead of purple. */
button:not(.active):not(.primary-btn):not(.add-event-btn):not(.fm-help-done):not(.fm-help-close):not(.fm-first-visit-open):not(.fm-first-visit-dismiss) {
    border-color: var(--fm-border-soft);
}

/* Links and interactive highlights */
a {
    color: #93C5FD;
}

.admin-contact-email-link {
    color: #93C5FD !important;
}

/* Success / connected / active state */
.status-dot,
.live-dot,
.connected-dot {
    background: var(--fm-green) !important;
}

.live,
.status-live,
.database-connected {
    color: var(--fm-green) !important;
}

/* Reports / destructive actions */
.delete-btn,
.danger-btn,
.report-btn {
    border-color: rgba(240, 79, 95, .42) !important;
    color: #FFB4BC !important;
}

.delete-btn:hover,
.danger-btn:hover,
.report-btn:hover {
    background: rgba(240, 79, 95, .10) !important;
}

/* Keep modals dark and neutral rather than purple. */
.fm-help-backdrop {
    background: rgba(2, 6, 18, .88) !important;
}

.fm-help-panel {
    background:
        linear-gradient(
            145deg,
            #101831,
            #0B1124
        ) !important;

    border-color: rgba(255, 178, 28, .16) !important;
}

.fm-help-icon {
    background: rgba(255, 178, 28, .08) !important;
}

.fm-help-note {
    border-color: rgba(255, 178, 28, .18) !important;
    background: rgba(255, 178, 28, .045) !important;
}

/* First-visit prompt follows the new palette. */
.fm-first-visit {
    background: rgba(16, 24, 49, .98) !important;
    border-color: rgba(255, 178, 28, .18) !important;
}

.fm-first-visit-open {
    background: var(--fm-gold) !important;
    color: #111827 !important;
}

/* Selection colour */
::selection {
    background: rgba(255, 178, 28, .30);
    color: #FFFFFF;
}

/* Mobile: preserve the same midnight identity without extra glow. */
@media (max-width: 650px) {
    html,
    body {
        background:
            radial-gradient(
                circle at 92% 6%,
                rgba(255, 122, 24, .055),
                transparent 22%
            ),
            var(--fm-night) !important;
    }
}



/* =========================================================
   MOBILE HEADER — COMPACT 3-BUTTON ROW + ALERT BELOW
========================================================= */

@media (max-width: 650px) {

    .header-actions {
        display: grid !important;

        grid-template-columns:
            repeat(3, minmax(0, 1fr))
            !important;

        gap: 5px !important;

        align-items: stretch;
    }

    .header-actions > * {
        min-width: 0 !important;
    }

    .auth-header-button,
    .b9-my-events-btn,
    .admin-reports-button,
    .fm-help-button {
        width: 100% !important;

        min-width: 0 !important;
        min-height: 36px !important;

        padding:
            6px
            5px
            !important;

        border-radius: 8px !important;

        font-size: 9px !important;
        line-height: 1.1 !important;

        white-space: nowrap;

        overflow: hidden;
        text-overflow: ellipsis;
    }

    .fm-help-button {
        gap: 4px !important;
    }

    .fm-help-button > span {
        width: 17px !important;
        height: 17px !important;

        font-size: 10px !important;
    }

    /* Alerts always gets its own compact row underneath. */
    .firework-alerts-button {
        grid-column: 1 / -1 !important;
        grid-row: 2 !important;

        width: 100% !important;

        min-height: 34px !important;

        padding:
            5px
            8px
            !important;

        border-radius: 8px !important;

        font-size: 9px !important;
    }

    /* Prevent the older single-button mobile rule from
       stretching a normal action across the whole row. */
    .header-actions > :only-child {
        grid-column: auto !important;
    }

}

@media (max-width: 380px) {

    .auth-header-button,
    .b9-my-events-btn,
    .admin-reports-button,
    .fm-help-button {
        padding:
            5px
            3px
            !important;

        font-size: 8px !important;
    }

}



/* =========================================================
   MOBILE HEADER FIX v2
   3 compact buttons + Help/Alerts second row
========================================================= */
@media (max-width: 650px) {

    .header-actions {
        display: grid !important;
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        gap: 8px !important;
        width: 100% !important;
    }

    /* Reset old mobile positioning/sizing on header buttons */
    .header-actions .admin-reports-button,
    .header-actions .b9-my-events-btn,
    .header-actions .auth-header-button,
    .header-actions .fm-help-button,
    .header-actions .firework-alerts-button {
        position: static !important;
        float: none !important;
        margin: 0 !important;
        width: 100% !important;
        max-width: none !important;
        min-width: 0 !important;
        min-height: 46px !important;
        padding: 8px 6px !important;
        border-radius: 12px !important;
        font-size: 11px !important;
        line-height: 1.15 !important;
        justify-content: center !important;
        align-items: center !important;
    }

    /* First three controls */
    .header-actions .admin-reports-button {
        grid-column: 1 !important;
        grid-row: 1 !important;
    }

    .header-actions .b9-my-events-btn {
        grid-column: 2 !important;
        grid-row: 1 !important;
    }

    .header-actions .auth-header-button {
        grid-column: 3 !important;
        grid-row: 1 !important;
    }

    /* Second row */
    .header-actions .fm-help-button {
        grid-column: 1 !important;
        grid-row: 2 !important;
    }

    .header-actions .firework-alerts-button {
        grid-column: 2 / 4 !important;
        grid-row: 2 !important;
    }

    /* Keep the first-time hint from covering the map area */
    .first-time-here,
    .first-time-here-banner,
    .fm-first-time-hint,
    .first-visit-help,
    .help-onboarding-banner {
        position: relative !important;
        inset: auto !important;
        left: auto !important;
        right: auto !important;
        bottom: auto !important;
        top: auto !important;
        width: 100% !important;
        max-width: none !important;
        margin: 10px 0 !important;
        z-index: 2 !important;
    }
}



/* =========================================================
   MAP POPUP — COMPACT VIEW LOCATION BUTTON
========================================================= */
.leaflet-popup-content .view-location-button,
.leaflet-popup-content .view-location-btn,
.leaflet-popup-content .map-view-location-button,
.leaflet-popup-content button[data-action="view-location"],
.leaflet-popup-content a[data-action="view-location"] {
    display: inline-flex !important;
    width: auto !important;
    min-width: 0 !important;
    min-height: 0 !important;
    padding: 7px 12px !important;
    margin: 8px 0 0 !important;
    border-radius: 9px !important;
    font-size: 12px !important;
    line-height: 1.1 !important;
    align-items: center !important;
    justify-content: center !important;
}



/* =========================================================
   MAP POPUP — COMPACT RECOMMENDED VIEWING SPOT BUTTON
========================================================= */

.leaflet-popup-content .fm-popup-viewing-btn {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 5px;

    width: auto !important;
    min-width: 0 !important;
    min-height: 32px !important;

    margin: 10px 0 1px !important;
    padding: 6px 10px !important;

    border:
        1px solid
        rgba(255,178,28,.28);

    border-radius: 9px;

    background:
        rgba(255,178,28,.075);

    color: #FFD56A !important;

    font-family: inherit;
    font-size: 10px !important;
    font-weight: 800;
    line-height: 1 !important;

    cursor: pointer;

    box-shadow: none !important;
}

.leaflet-popup-content .fm-popup-viewing-btn:hover,
.leaflet-popup-content .fm-popup-viewing-btn:focus {
    border-color:
        rgba(255,178,28,.48);

    background:
        rgba(255,178,28,.13);

    color: #FFFFFF !important;
}

@media (max-width: 650px) {

    .leaflet-popup-content .fm-popup-viewing-btn {
        min-height: 30px !important;

        padding: 6px 9px !important;

        font-size: 9px !important;
    }

}



/* =========================================================
   VISIT COUNTER — MOBILE + 24H DISPLAY FIX
========================================================= */

@media (max-width: 850px) {

    .site-visit-badge {
        display: flex !important;
    }

}

@media (max-width: 650px) {

    .header-actions .site-visit-badge {
        display: flex !important;

        grid-column: 1 / -1 !important;
        grid-row: 3 !important;

        width: 100% !important;

        min-height: 32px !important;

        margin: 0 !important;
        padding: 5px 9px !important;

        justify-content: center;

        border-radius: 9px !important;

        font-size: 10px !important;

        background:
            rgba(255,255,255,.04) !important;
    }

    .header-actions .site-visit-badge span {
        font-size: 10px !important;
    }

}



/* =========================================================
   BLAST INTENSITY SELECTOR — RESTORE ORIGINAL COLOUR SCALE
   Prevent the Midnight + Gold global button.active rule from
   recolouring the selected intensity bar gold/orange.
========================================================= */

.phase-intensity-button {
    opacity: 0.22 !important;
    box-shadow: none !important;
}

.phase-intensity-button.active {
    opacity: 1 !important;
    color: inherit !important;

    box-shadow:
        0 0 10px rgba(255,255,255,.12) !important;

    filter:
        brightness(1.16)
        saturate(1.08);
}

.phase-intensity-button:nth-child(1),
.phase-intensity-button.active:nth-child(1) {
    background: #22c55e !important;
}

.phase-intensity-button:nth-child(2),
.phase-intensity-button.active:nth-child(2) {
    background: #a3c91c !important;
}

.phase-intensity-button:nth-child(3),
.phase-intensity-button.active:nth-child(3) {
    background: #f59e0b !important;
}

.phase-intensity-button:nth-child(4),
.phase-intensity-button.active:nth-child(4) {
    background: #ef4444 !important;
}

.phase-intensity-button:nth-child(5),
.phase-intensity-button.active:nth-child(5) {
    background: #a855f7 !important;
}



/* =========================================================
   BLAST INTENSITY — HARD OVERRIDE AGAINST GLOBAL GOLD ACTIVE
========================================================= */

.phase-intensity-bar > button.phase-intensity-button {
    background-image: none !important;
    box-shadow: none !important;
}

.phase-intensity-bar > button.phase-intensity-button:nth-of-type(1) {
    background: #22c55e !important;
}

.phase-intensity-bar > button.phase-intensity-button:nth-of-type(2) {
    background: #a3c91c !important;
}

.phase-intensity-bar > button.phase-intensity-button:nth-of-type(3) {
    background: #f59e0b !important;
}

.phase-intensity-bar > button.phase-intensity-button:nth-of-type(4) {
    background: #ef4444 !important;
}

.phase-intensity-bar > button.phase-intensity-button:nth-of-type(5) {
    background: #a855f7 !important;
}

.phase-intensity-bar > button.phase-intensity-button:not(.active) {
    opacity: 0.22 !important;
    filter: none !important;
}

.phase-intensity-bar > button.phase-intensity-button.active {
    opacity: 1 !important;
    background-image: none !important;
    filter: brightness(1.18) saturate(1.12) !important;
    box-shadow: 0 0 9px rgba(255,255,255,.14) !important;
}



/* =========================================================
   EVENT OWNER CONTACT + OWNER REVIEW REQUEST
========================================================= */

.event-owner-contact-modal,
.owner-review-modal {
    display: none;

    position: fixed;
    inset: 0;

    z-index: 19000;

    align-items: center;
    justify-content: center;

    padding: 18px;

    background:
        rgba(2,6,18,.88);

    backdrop-filter:
        blur(8px);
}

.event-owner-contact-modal.open,
.owner-review-modal.open {
    display: flex;
}

.event-owner-contact-box,
.owner-review-box {
    position: relative;

    width:
        min(
            560px,
            100%
        );

    max-height:
        min(
            780px,
            calc(100vh - 32px)
        );

    overflow-y: auto;

    padding: 25px;

    border:
        1px solid
        rgba(255,178,28,.16);

    border-radius: 17px;

    background:
        linear-gradient(
            145deg,
            #101831,
            #0b1124
        );

    box-shadow:
        0 28px 75px
        rgba(0,0,0,.55);
}

.event-owner-contact-close,
.owner-review-close {
    position: absolute;

    top: 12px;
    right: 12px;

    width: 36px;
    height: 36px;

    border: 0;
    border-radius: 50%;

    background:
        rgba(255,255,255,.06);

    color: #cbd5e1;

    font-size: 17px;

    cursor: pointer;
}

.event-owner-contact-box h2,
.owner-review-box h2 {
    margin:
        7px
        40px
        8px
        0;

    color: #fff;
}

.event-owner-contact-content {
    display: grid;

    gap: 8px;

    margin-top: 16px;
}

.owner-contact-row {
    display: grid;

    grid-template-columns:
        125px
        minmax(0,1fr);

    gap: 10px;

    padding:
        10px
        11px;

    border:
        1px solid
        rgba(255,255,255,.065);

    border-radius: 9px;

    background:
        rgba(255,255,255,.025);
}

.owner-contact-row span {
    color: #93a2bb;

    font-size: 10px;
}

.owner-contact-row strong {
    min-width: 0;

    color: #e8edf7;

    font-size: 11px;

    overflow-wrap: anywhere;
}

.owner-contact-empty {
    display: grid;

    gap: 5px;

    padding: 13px;

    border:
        1px solid
        rgba(240,79,95,.18);

    border-radius: 10px;

    background:
        rgba(240,79,95,.055);
}

.owner-contact-empty span {
    color: #aab4ce;

    font-size: 10px;
    line-height: 1.5;
}

.event-owner-contact-actions,
.owner-review-actions {
    display: flex;

    flex-wrap: wrap;

    gap: 8px;

    margin-top: 14px;
}

.event-owner-action,
.owner-review-actions button {
    display: inline-flex;

    align-items: center;
    justify-content: center;

    min-height: 39px;

    padding:
        8px
        11px;

    border:
        1px solid
        rgba(255,255,255,.10);

    border-radius: 9px;

    background:
        rgba(255,255,255,.045);

    color: #dce5f3;

    font-family: inherit;
    font-size: 10px;
    font-weight: 800;

    text-decoration: none;

    cursor: pointer;
}

.event-owner-action.primary {
    border-color:
        rgba(255,178,28,.24);

    background:
        rgba(255,178,28,.075);

    color: #ffd56a;
}

.event-owner-action:disabled,
.owner-review-actions button:disabled {
    opacity: .48;

    cursor: default;
}

.event-owner-contact-message {
    min-height: 18px;

    margin:
        10px
        0
        0;

    color: #fca5a5;

    font-size: 10px;
}

.event-owner-contact-message.success {
    color: #86efac;
}

.owner-review-intro {
    color: #aab4ce;

    font-size: 11px;
    line-height: 1.55;
}

.owner-review-list {
    display: grid;

    gap: 10px;

    margin-top: 14px;
}

.owner-review-item {
    padding: 14px;

    border:
        1px solid
        rgba(255,255,255,.08);

    border-radius: 12px;

    background:
        rgba(255,255,255,.03);
}

.owner-review-event-name {
    display: block;

    color: #fff;

    font-size: 14px;
}

.owner-review-meta {
    margin-top: 4px;

    color: #aab4ce;

    font-size: 10px;
}

.owner-review-warning {
    margin-top: 10px;

    padding: 8px 9px;

    border:
        1px solid
        rgba(240,79,95,.16);

    border-radius: 8px;

    background:
        rgba(240,79,95,.05);

    color: #fda4af;

    font-size: 10px;
    font-weight: 700;
}

.owner-review-message {
    margin:
        9px
        0
        0;

    color: #cbd5e1;

    font-size: 10px;
    line-height: 1.5;
}

.admin-report-actions .admin-contact-owner {
    border-color:
        rgba(255,178,28,.22) !important;

    background:
        rgba(255,178,28,.06) !important;

    color: #ffd56a !important;
}

@media (max-width: 650px) {

    .event-owner-contact-modal,
    .owner-review-modal {
        align-items: flex-start;

        overflow-y: auto;

        padding:
            max(10px, env(safe-area-inset-top))
            9px
            max(12px, env(safe-area-inset-bottom));
    }

    .event-owner-contact-box,
    .owner-review-box {
        width: 100%;
        max-width: 100%;
        max-height: none;

        padding:
            21px
            15px;

        border-radius: 15px;
    }

    .owner-contact-row {
        grid-template-columns: 1fr;

        gap: 3px;
    }

    .event-owner-contact-actions,
    .owner-review-actions {
        display: grid;

        grid-template-columns:
            1fr
            1fr;
    }

    .event-owner-action.primary {
        grid-column:
            1 / -1;
    }

}



/* =========================================================
   ADMIN REPORT ALERT TOAST
========================================================= */

.admin-report-toast {
    display: flex;

    position: fixed;

    right: 18px;
    top: 112px;

    z-index: 20000;

    align-items: center;

    gap: 10px;

    width:
        min(
            390px,
            calc(100% - 28px)
        );

    padding:
        12px
        14px;

    border:
        1px solid
        rgba(240,79,95,.30);

    border-radius: 13px;

    background:
        linear-gradient(
            145deg,
            #241329,
            #12192f
        );

    color: #fff;

    box-shadow:
        0 18px 50px
        rgba(0,0,0,.42);

    font-family: inherit;

    text-align: left;

    cursor: pointer;

    opacity: 0;

    pointer-events: none;

    transform:
        translateY(-10px);

    transition:
        opacity .2s ease,
        transform .2s ease;
}

.admin-report-toast.show {
    opacity: 1;

    pointer-events: auto;

    transform:
        translateY(0);
}

.admin-report-toast-icon {
    display: grid;

    place-items: center;

    flex: 0 0 auto;

    width: 34px;
    height: 34px;

    border-radius: 10px;

    background:
        rgba(240,79,95,.10);

    color: #fda4af;

    font-size: 18px;
}

.admin-report-toast-copy {
    min-width: 0;
}

.admin-report-toast-copy strong,
.admin-report-toast-copy span {
    display: block;
}

.admin-report-toast-copy strong {
    color: #fff;

    font-size: 12px;
}

.admin-report-toast-copy span {
    margin-top: 2px;

    color: #cbd5e1;

    font-size: 10px;
    line-height: 1.45;
}

.admin-reports-button.has-reports {
    border-color:
        rgba(240,79,95,.35) !important;

    box-shadow:
        0 0 0 1px
        rgba(240,79,95,.08) !important;
}

@media (max-width: 650px) {

    .admin-report-toast {
        right: 10px;
        top: 10px;

        width:
            calc(100% - 20px);

        padding:
            11px
            12px;
    }

}

