body{

    margin:0;
    background:#FCEBEB;
    font-family:sans-serif;
    color:#2c2c2a;

}

.page-header{

    margin:0 0 24px;
    border-bottom:3px solid #A32D2D;

}

.header-photo{

    position:relative;
    width:100%;
    height:clamp(90px, 11vw, 170px);
    overflow:hidden;

}

.header-bg{

    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center;

}

.header-photo::after{

    content:"";
    position:absolute;
    inset:0;
    background:linear-gradient(180deg, rgba(8,10,20,.18), rgba(8,10,20,.05) 40%, rgba(8,10,20,.3));

}

.header-content{

    position:absolute;
    inset:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:clamp(3px, 1vw, 8px);
    padding:12px;
    text-align:center;
    color:#fff;

}

.header-title{

    margin:0;
    font-family:"Hiragino Mincho ProN","Yu Mincho",serif;
    font-weight:600;
    font-size:clamp(16px, 3.2vw, 30px);
    letter-spacing:.2em;
    text-shadow:0 2px 18px rgba(0,0,0,.55);

}

.header-rule-row{

    display:flex;
    align-items:center;
    gap:8px;

}

.header-rule{

    width:clamp(12px, 4vw, 40px);
    height:1px;
    background:rgba(255,255,255,.6);

}

.header-subtitle{

    margin:0;
    font-size:clamp(9px, 1.3vw, 12px);
    letter-spacing:.15em;
    text-shadow:0 1px 8px rgba(0,0,0,.5);

}

.site-status-bar{

    max-width:1300px;
    margin:0 auto 20px;
    padding:0 24px;

    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    flex-wrap:wrap;

}

.festival-count{

    margin:0;
    font-size:14px;
    color:#791F1F;

}

.changelog-button{

    background:#fff;
    color:#A32D2D;
    border:0.5px solid #F09595;
    padding:6px 16px;
    font-size:13px;

}

.changelog-button:hover{

    background:#FCEBEB;

}

.changelog-dialog{

    border:none;
    border-radius:12px;
    padding:0;
    width:min(560px, 90vw);
    max-height:80vh;

}

.changelog-dialog::backdrop{

    background:rgba(44,44,42,.5);

}

.changelog-dialog-header{

    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:16px 20px;
    border-bottom:0.5px solid #F5C4B3;

}

.changelog-dialog-header h2{

    margin:0;
    font-size:18px;
    color:#501313;

}

.changelog-close-button{

    background:none;
    color:#791F1F;
    padding:2px 8px;
    font-size:16px;

}

.changelog-close-button:hover{

    background:#FCEBEB;

}

.changelog-list{

    list-style:none;
    margin:0;
    padding:8px 20px 20px;
    overflow-y:auto;

}

.changelog-item{

    padding:12px 0;
    border-bottom:0.5px solid #F5C4B3;

}

.changelog-item:last-child{

    border-bottom:none;

}

.changelog-date{

    margin:0 0 4px;
    font-size:12px;
    color:#993C1D;
    display:flex;
    align-items:center;
    gap:8px;

}

.changelog-prefecture{

    background:#FAEEDA;
    color:#633806;
    padding:1px 10px;
    border-radius:10px;
    font-size:11px;

}

.changelog-content{

    margin:0;
    font-size:14px;
    color:#2c2c2a;
    line-height:1.6;

}

.layout{

    max-width:1300px;
    margin:0 auto 40px;
    padding:0 24px;

    display:grid;
    grid-template-columns:2fr 1fr;
    gap:24px;
    align-items:start;

}

.main-column{

    min-width:0;

}

.filter-area{

    background:#fff;
    border-radius:12px;
    padding:16px;

    margin-bottom:16px;

}

.filter-row{

    display:flex;

    gap:15px;

    flex-wrap:wrap;

    margin-bottom:12px;

}

#freeword{

    flex:1;

    min-width:200px;

    padding:10px;

    font-size:16px;

    border:0.5px solid #F09595;

    border-radius:6px;

}

.filter-checkboxes{

    align-items:center;

    font-size:14px;

    color:#5f5e5a;

}

.filter-checkboxes label{

    display:flex;

    align-items:center;

    gap:4px;

}

select{

    padding:10px;

    font-size:16px;

    border:0.5px solid #F09595;

    border-radius:6px;

    background:#fff;

}

button{

    background:#A32D2D;

    color:white;

    border:none;

    padding:10px 25px;

    border-radius:6px;

    cursor:pointer;

}

button:hover{

    background:#791F1F;

}

.location-area{

    text-align:left;

    background:#fff;
    border-radius:12px;
    padding:16px;

    margin-bottom:20px;

}

#locationStatus{

    color:#993C1D;

    font-size:14px;

    margin-top:10px;

}

.location-row{

    display:flex;

    gap:15px;

    justify-content:flex-start;

    flex-wrap:wrap;

}

.map-column{

    position:sticky;

    top:20px;

}

#map{

    height:calc(100vh - 40px);

    border-radius:12px;

    border:0.5px solid #F09595;

}

.card{

    background:#fff;

    border:0.5px solid #F09595;

    border-radius:12px;

    margin-bottom:16px;

    padding:20px 22px;

    transition:box-shadow 0.3s ease;

}

.card-highlighted{

    box-shadow:0 0 0 3px #A32D2D;

}

.popup-card-link{

    margin-top:8px;

    padding:6px 12px;

    font-size:13px;

}

.card h2{

    margin:0 0 10px;

    font-size:20px;

    color:#501313;

}

.card-ended{

    opacity:0.6;

}

.ended-badge{

    background:#B4B2A9;

    color:#2c2c2a;

    font-size:12px;

    padding:2px 10px;

    border-radius:10px;

    vertical-align:middle;

    margin:0 8px;

    white-space:nowrap;
    display:inline-block;

}

.approximate-badge{

    background:#FAEEDA;

    color:#633806;

    font-size:12px;

    padding:2px 10px;

    border-radius:10px;

    display:inline-block;

    margin:2px 0 6px;

}

.card-highlight{

    font-size:16px;

    color:#791F1F;

    margin:0 0 6px;

    display:flex;

    align-items:center;

    gap:8px;

    flex-wrap:wrap;

}

.card-map-button{

    background:#fff;
    color:#A32D2D;
    border:0.5px solid #F09595;
    padding:2px 10px;
    font-size:12px;

}

.card-map-button:hover{

    background:#FCEBEB;

}

.card-sublocation{

    font-size:13px;

    color:#993C1D;

    margin:0 0 12px;

}

.distance-badge{

    background:#FAC775;

    color:#412402;

    padding:1px 8px;

    border-radius:10px;

    font-size:12px;

}

.card-description{

    font-size:14px;

    color:#5f5e5a;

    line-height:1.7;

    margin:0 0 14px;

}

.card-info-grid{

    display:grid;

    grid-template-columns:1fr 1fr;

    gap:4px 16px;

    font-size:13px;

    color:#5f5e5a;

    margin-bottom:12px;

}

.card-info-grid p{

    margin:0;

}

.card-badges{

    display:flex;

    gap:8px;

    flex-wrap:wrap;

    margin-bottom:12px;

}

.badge{

    font-size:12px;

    padding:3px 10px;

    border-radius:10px;

    background:#FAEEDA;

    color:#633806;

}

.badge-positive{

    background:#EAF3DE;

    color:#27500A;

}

.card-footer{

    display:flex;

    justify-content:space-between;

    align-items:center;

    flex-wrap:wrap;

    gap:6px;

    border-top:0.5px solid #F5C4B3;

    padding-top:10px;

    font-size:12px;

    color:#888780;

}

.card-footer a{

    color:#A32D2D;

}

.pagination{

    display:flex;

    justify-content:center;

    align-items:center;

    gap:16px;

    margin:20px 0;

}

.pagination button:disabled{

    background:#D3D1C7;

    cursor:default;

}

.pagination-status{

    font-size:14px;

    color:#791F1F;

}

@media (max-width:900px){

    .layout{

        grid-template-columns:1fr;

    }

    .map-column{

        position:static;

        order:-1;

    }

    #map{

        height:300px;

    }

}
