/* =========================================================
   EVENTS PAGE — events.css
   Requires: styles.css + page-template.css
========================================================= */

.events-section{
    padding-top:70px;
    padding-bottom:100px;
}
.page-banner-edge{
        background: #f7f2df;
}

/* =========================================================
   FILTER BAR
========================================================= */

.events-filter-bar{

    display:flex;
    flex-wrap:wrap;
    gap:10px;
    margin-bottom:52px;
    padding-bottom:28px;
    border-bottom:1px solid rgba(0,0,0,.07);

}

.filter-btn{

    padding:10px 20px;
    border-radius:50px;
    border:2px solid rgba(0,0,0,.10);
    background:#fff;
    color:#666;
    font-family:'Inter',sans-serif;
    font-size:13px;
    font-weight:600;
    cursor:pointer;
    letter-spacing:.2px;

    transition:
        background .2s ease,
        border-color .2s ease,
        color .2s ease,
        transform .2s ease,
        box-shadow .2s ease;

}

.filter-btn:hover{

    border-color:#dfb126;
    color:#111;
    transform:translateY(-1px);

}

.filter-btn.active{

    background:#dfb126;
    border-color:#dfb126;
    color:#111;
    box-shadow:0 4px 14px rgba(223,177,38,.35);

}

/* =========================================================
   LOADING
========================================================= */

.events-loading{

    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:18px;
    padding:100px 0;
    color:#bbb;
    font-size:15px;
    grid-column:1 / -1;

}

.events-spinner{

    width:40px;
    height:40px;
    border:3px solid rgba(223,177,38,.2);
    border-top-color:#dfb126;
    border-radius:50%;
    animation:spin .75s linear infinite;

}

@keyframes spin{ to{ transform:rotate(360deg); } }

/* =========================================================
   EVENTS GRID
========================================================= */

.events-grid{

    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(340px, 1fr));
    gap:24px;

}

/* =========================================================
   SECTION HEADERS (Upcoming / Recurring / Past)
========================================================= */

.events-section-header-wrapper{
    grid-column: 1 / -1;
    margin-top: 16px;
    margin-bottom: 4px;
}

/* Remove top margin from the very first section header */
.events-section-header-wrapper:first-child{
    margin-top: 0;
}

.events-section-header{
    padding: 18px 0 18px;
    border-bottom: 2px solid rgba(0,0,0,.07);
}

.events-section-header-inner{
    display: flex;
    align-items: center;
    gap: 14px;
}

.events-section-icon{
    font-size: 22px;
    line-height: 1;
    flex-shrink: 0;
}

.events-section-title{
    font-family: 'Oswald', sans-serif;
    font-size: 22px;
    font-weight: 600;
    color: #111;
    letter-spacing: .5px;
    line-height: 1;
    margin: 0 0 4px;
}

.events-section-sub{
    font-size: 13px;
    color: #999;
    font-weight: 400;
    margin: 0;
    line-height: 1;
}

/* =========================================================
   EVENT CARD
========================================================= */

.event-card{

    background:#fff;
    border:1px solid rgba(0,0,0,.08);
    border-radius:20px;
    overflow:hidden;
    cursor:pointer;
    display:flex;
    flex-direction:column;

    animation:card-in .4s ease both;

    transition:
        transform .3s cubic-bezier(.34,1.56,.64,1),
        box-shadow .3s ease,
        border-color .3s ease,
        filter .3s ease;

}

@keyframes card-in{
    from{ opacity:0; transform:translateY(16px); }
    to  { opacity:1; transform:translateY(0); }
}

.event-card:hover{
    transform:translateY(-6px);
    box-shadow:0 24px 56px rgba(0,0,0,.10);
    border-color:rgba(223,177,38,.5);
}

/* ── PAST CARD ─────────────────────────────────────────── */

.event-card--past{
    filter: grayscale(85%) opacity(0.8);
}

.event-card--past:hover{
    filter: grayscale(40%) opacity(0.95);
    border-color: rgba(0,0,0,.18);
    box-shadow: 0 12px 32px rgba(0,0,0,.08);
}

.event-card--past .event-card-header{
    background: linear-gradient(135deg, rgba(180,180,180,.85) 0%, rgba(150,150,150,.75) 100%);
}

/* CARD HEADER */

.event-card-header{

    display:flex;
    align-items:stretch;
    background:linear-gradient(135deg, rgba(223,177,38,.95) 0%, rgba(245,166,35,.88) 100%);
    padding:20px 22px;
    justify-content:space-between;
    gap:16px;

}

.event-card-date-col{

    display:flex;
    flex-direction:column;
    align-items:flex-start;
    line-height:1;

}

.event-card-weekday{

    font-size:11px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:2px;
    color:rgba(0,0,0,.5);
    margin-bottom:2px;

}

.event-card-day{

    font-family:'Oswald',sans-serif;
    font-size:56px;
    font-weight:700;
    color:#111;
    line-height:1;

}

.event-card-month{

    font-size:12px;
    font-weight:600;
    color:rgba(0,0,0,.55);
    margin-top:3px;
    text-transform:uppercase;
    letter-spacing:1px;

}

.event-card-header-right{

    display:flex;
    align-items:flex-start;
    justify-content:flex-end;

}

.event-card-category-badge{

    background:rgba(0,0,0,.10);
    color:#111;
    font-size:11px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:1.2px;
    padding:6px 12px;
    border-radius:50px;
    white-space:nowrap;

}

/* CARD BODY */

.event-card-body{

    padding:22px 22px 16px;
    flex:1;
    display:flex;
    flex-direction:column;
    gap:10px;

}

/* Name + status badge row */
.event-card-name-row{
    display: flex;
    align-items: flex-start;
    gap: 10px;
    flex-wrap: wrap;
}

.event-card-name{

    font-family:'Oswald',sans-serif;
    font-size:21px;
    font-weight:600;
    color:#111;
    line-height:1.2;
    flex: 1 1 auto;
    min-width: 0;

}

/* ── STATUS BADGES ──────────────────────────────────────── */

.event-status-badge{
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    padding: 4px 10px;
    border-radius: 50px;
    white-space: nowrap;
    flex-shrink: 0;
    margin-top: 3px;
}

.event-status-badge--upcoming{
    background: rgba(223,177,38,.12);
    color: #7a5c00;
    border: 1px solid rgba(223,177,38,.35);
}

.event-status-badge--past{
    background: rgba(0,0,0,.06);
    color: #888;
    border: 1px solid rgba(0,0,0,.12);
}

/* ─────────────────────────────────────────────────────── */

.event-card-meta{

    display:flex;
    flex-direction:column;
    gap:6px;

}

.event-card-meta-item{

    display:flex;
    align-items:center;
    gap:7px;
    font-size:13px;
    color:#777;
    line-height:1.4;

}

.event-card-meta-item svg{
    flex-shrink:0;
    color:#aaa;
}

.event-card-desc{

    font-size:14px;
    color:#888;
    line-height:1.75;
    display:-webkit-box;
    -webkit-line-clamp:3;
    -webkit-box-orient:vertical;
    overflow:hidden;
    flex:1;

}

/* CARD FOOTER */

.event-card-footer{

    padding:14px 22px;
    border-top:1px solid rgba(0,0,0,.06);
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;

}

.event-card-cta{

    display:flex;
    align-items:center;
    gap:6px;
    font-size:13px;
    font-weight:700;
    color:#dfb126;
    letter-spacing:.2px;

}

.event-card--past .event-card-cta{
    color: #999;
}

.event-card-reg-tag{

    font-size:11px;
    font-weight:600;
    background:rgba(223,177,38,.10);
    color:#7a5c00;
    border:1px solid rgba(223,177,38,.25);
    padding:4px 10px;
    border-radius:50px;
    white-space:nowrap;

}

/* EMPTY STATE */

.events-empty{

    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:10px;
    padding:80px 0;
    text-align:center;

}

.events-empty-icon{
    font-size:48px;
    margin-bottom:8px;
}

.events-empty p{
    font-size:17px;
    color:#666;
    font-weight:600;
}

.events-empty-sub{
    font-size:14px !important;
    color:#aaa !important;
    font-weight:400 !important;
}

.events-none{

    grid-column:1/-1;
    text-align:center;
    color:#aaa;
    padding:80px 0;
    font-size:16px;

}

/* =========================================================
   MODAL OVERLAY
========================================================= */

.event-modal-overlay{

    position:fixed;
    inset:0;
    z-index:1000;
    background:rgba(0,0,0,.55);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);

    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;

    opacity:0;
    pointer-events:none;
    transition:opacity .3s ease;

}

.event-modal-overlay.open{
    opacity:1;
    pointer-events:all;
}

/* =========================================================
   MODAL
========================================================= */

.event-modal{

    background:#fff;
    border-radius:28px;
    width:100%;
    max-width:740px;
    max-height:88vh;
    overflow-y:auto;
    position:relative;
    display:flex;
    flex-direction:column;

    transform:translateY(40px) scale(.96);
    transition:transform .4s cubic-bezier(.34,1.56,.64,1);

    box-shadow:0 40px 100px rgba(0,0,0,.25);

}

.event-modal-overlay.open .event-modal{
    transform:translateY(0) scale(1);
}

.event-modal::-webkit-scrollbar{ width:5px; }
.event-modal::-webkit-scrollbar-track{ background:transparent; }
.event-modal::-webkit-scrollbar-thumb{ background:rgba(0,0,0,.12); border-radius:3px; }

/* CLOSE */

.modal-close{

    position:absolute;
    top:18px;
    right:18px;
    z-index:20;

    width:34px;
    height:34px;
    border-radius:50%;
    border:none;
    background:rgba(0,0,0,.12);
    color:#333;
    cursor:pointer;
    display:flex;
    align-items:center;
    justify-content:center;

    transition:background .2s ease, transform .2s ease;

}

.modal-close:hover{
    background:rgba(0,0,0,.2);
    transform:rotate(90deg);
}

/* MODAL HEADER */

.modal-header{

    background:linear-gradient(135deg, rgba(223,177,38,.95) 0%, rgba(245,166,35,.88) 100%);
    padding:44px 40px 36px;
    flex-shrink:0;
    transition: background .3s ease;

}

/* Past modal — grey header */
.event-modal--past .modal-header{
    background: linear-gradient(135deg, rgba(180,180,180,.9) 0%, rgba(140,140,140,.8) 100%);
}

/* Past status strip inside modal header */
.modal-past-strip{
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: rgba(255,255,255,.85);
    background: rgba(0,0,0,.18);
    border-radius: 50px;
    padding: 5px 14px;
    width: fit-content;
    margin-bottom: 14px;
}

.modal-header-top{
    margin-bottom:20px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.modal-category{

    display:inline-block;
    background:rgba(0,0,0,.10);
    color:#111;
    font-size:11px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:1.5px;
    padding:6px 14px;
    border-radius:50px;

}

.modal-header-body{

    display:flex;
    align-items:flex-start;
    gap:28px;

}

/* DATE BLOCK */

.modal-date-block{

    display:flex;
    flex-direction:column;
    align-items:center;
    background:rgba(0,0,0,.08);
    border-radius:16px;
    padding:16px 20px;
    flex-shrink:0;
    min-width:90px;
    text-align:center;
    line-height:1;

}

.modal-date-weekday{

    font-size:11px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:2px;
    color:rgba(0,0,0,.45);
    margin-bottom:4px;

}

.modal-date-day{

    font-family:'Oswald',sans-serif;
    font-size:58px;
    font-weight:700;
    color:#111;
    line-height:1;

}

.modal-date-my{

    font-size:12px;
    font-weight:600;
    color:rgba(0,0,0,.5);
    text-transform:uppercase;
    letter-spacing:1px;
    margin-top:4px;

}

/* TITLE GROUP */

.modal-title-group{
    flex:1;
}

.modal-event-name{

    font-family:'Oswald',sans-serif;
    font-size:34px;
    line-height:1.1;
    color:#111;
    margin-bottom:14px;

}

.modal-meta{

    display:flex;
    flex-direction:column;
    gap:8px;

}

.modal-meta-item{

    display:flex;
    align-items:center;
    gap:8px;
    font-size:14px;
    color:rgba(0,0,0,.6);
    font-weight:500;

}

.modal-meta-item svg{
    flex-shrink:0;
    opacity:.6;
}

/* MODAL BODY */

.modal-body{

    padding:36px 40px;
    display:flex;
    flex-direction:column;
    gap:36px;

}

.modal-section-title{

    font-family:'Oswald',sans-serif;
    font-size:16px;
    font-weight:600;
    color:#111;
    text-transform:uppercase;
    letter-spacing:1.5px;
    margin-bottom:14px;
    padding-bottom:10px;
    border-bottom:2px solid rgba(223,177,38,.3);

}

.event-modal--past .modal-section-title{
    border-bottom-color: rgba(0,0,0,.1);
}

.modal-body p{

    font-size:16px;
    line-height:1.9;
    color:#444;

}

.modal-address{

    font-size:14px !important;
    color:#777 !important;
    margin-bottom:16px;

}

/* MAP */

.modal-map{

    border-radius:16px;
    overflow:hidden;
    border:1px solid rgba(0,0,0,.08);
    height:260px;

}

.modal-map iframe{

    width:100%;
    height:100%;
    border:none;
    display:block;

}

.modal-map-unavailable{

    display:flex;
    align-items:center;
    justify-content:center;
    height:100%;
    color:#bbb;
    font-size:14px;
    background:#f9f9f9;

}

/* MODAL FOOTER */

.modal-footer{

    padding:24px 40px 32px;
    border-top:1px solid rgba(0,0,0,.07);
    display:flex;
    align-items:center;
    gap:12px;
    flex-wrap:wrap;

}

.modal-cal-btn,
.modal-register-btn{

    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:14px 26px;
    border-radius:50px;
    font-family:'Inter',sans-serif;
    font-size:14px;
    font-weight:700;
    cursor:pointer;
    text-decoration:none;

    transition:
        transform .25s cubic-bezier(.34,1.56,.64,1),
        box-shadow .25s ease,
        background .2s ease;

}

.modal-cal-btn{

    background:#f2f2f2;
    color:#333;
    border:2px solid rgba(0,0,0,.08);

}

.modal-cal-btn:hover{

    background:#e8e8e8;
    transform:translateY(-2px);

}

.modal-register-btn{

    background:linear-gradient(135deg, #f5a623, #dfb126);
    color:#111;
    border:none;
    box-shadow:0 6px 20px rgba(223,177,38,.4);

}

.modal-register-btn:hover{

    transform:translateY(-3px);
    box-shadow:0 14px 36px rgba(223,177,38,.55);

}

/* =========================================================
   RESPONSIVE
========================================================= */

@media(max-width:900px){

    .events-grid{
        grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
    }

}

@media(max-width:768px){

    .events-grid{
        grid-template-columns:1fr;
    }

    .event-modal-overlay{
        padding:0;
        align-items:flex-end;
    }

    .event-modal{
        max-height:94vh;
        border-radius:24px 24px 0 0;
        max-width:100%;
    }

    .modal-header{
        padding:32px 24px 28px;
    }

    .modal-header-body{
        flex-direction:column;
        gap:16px;
    }

    .modal-date-block{
        flex-direction:row;
        align-items:center;
        gap:12px;
        width:100%;
        padding:12px 16px;
    }

    .modal-date-day{
        font-size:42px;
    }

    .modal-event-name{
        font-size:26px;
    }

    .modal-body{
        padding:24px;
        gap:28px;
    }

    .modal-footer{
        padding:20px 24px 28px;
        flex-direction:column;
    }

    .modal-cal-btn,
    .modal-register-btn{
        width:100%;
        justify-content:center;
    }

}
/* =========================================================
   RECURRING EVENT STYLES
========================================================= */

/* Card — recurring schedule badge */

.event-card-recurring{

    display:inline-flex;
    align-items:center;
    gap:6px;
    font-size:11.5px;
    font-weight:600;
    color:#7a5c00;
    background:rgba(223,177,38,.12);
    border:1px solid rgba(223,177,38,.3);
    border-radius:50px;
    padding:5px 11px;
    width:fit-content;
    letter-spacing:.1px;

}

.event-card-recurring svg{
    flex-shrink:0;
    color:#dfb126;
}

/* Modal — recurring schedule row (inside .modal-meta) */

.modal-schedule-row{

    display:flex;
    align-items:center;
    gap:8px;
    font-size:13.5px;
    font-weight:600;
    color:#7a5c00;
    background:rgba(223,177,38,.10);
    border:1px solid rgba(223,177,38,.25);
    border-radius:50px;
    padding:7px 14px;
    width:fit-content;
    margin-top:4px;

}

.modal-schedule-row svg{
    flex-shrink:0;
    color:#dfb126;
}