/* ==========================================================
   Nostalgia Event System Layout
========================================================== */

/* ---------- Reset ---------- */

*,
*::before,
*::after{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html,
body{
    width:100%;
    min-height:100%;
}

body{

    background:#f3f5f8;

    color:#333;

    /*
       予選ページと同じ、端末ごとに最も読みやすい標準 UI フォントを
       優先します。ヘッダー・左メニューを含む全ページで統一されます。
    */
    font-family:
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        "Hiragino Sans",
        "Yu Gothic UI",
        sans-serif;

    display:flex;

    flex-direction:column;

}

/* ---------- Header ---------- */

.site-header{

    position:fixed;

    top:0;

    left:0;

    right:0;

    height:64px;

    background:#ffffff;

    border-bottom:1px solid #e5e7eb;

    box-shadow:0 1px 4px rgba(0,0,0,.05);

    display:flex;

    justify-content:space-between;

    align-items:center;

    padding:0 20px;

    z-index:1000;

}

.header-left{

    display:flex;

    align-items:center;

    gap:16px;

}

.header-right{

    display:flex;

    align-items:center;

    gap:18px;

    font-size:22px;

}

.menu-toggle{

    border:none;

    background:none;

    cursor:pointer;

    font-size:24px;

    color:#444;

}

.logo{

    text-decoration:none;

    color:#2f6eb5;

    font-size:28px;

    font-weight:bold;

}

/* ---------- Layout ---------- */

.layout{

    display:flex;

    flex:1;

    margin-top:64px;

    min-height:calc(100vh - 64px);

}

/* ---------- Sidebar ---------- */

.sidebar{

    width:240px;

    background:#ffffff;

    border-right:1px solid #e5e7eb;

    padding:20px;

    flex-shrink:0;

}

.sidebar nav{

    display:flex;

    flex-direction:column;

}

.sidebar a{

    display:flex;

    align-items:center;

    gap:12px;

    padding:14px 16px;

    margin-bottom:6px;

    text-decoration:none;

    color:#444;

    border-radius:10px;

    transition:.2s;

}

.sidebar a:hover{

    background:#edf3ff;

    color:#2f6eb5;

}

.sidebar hr{

    border:none;

    border-top:1px solid #e5e7eb;

    margin:15px 0;

}

/* ---------- Main ---------- */

.content{

    flex:1;

    padding:30px;

}

/* ---------- Footer ---------- */

.site-footer{

    display:none;

}

/* ---------- Buttons ---------- */

.btn{

    display:inline-block;

    padding:12px 20px;

    border:none;

    border-radius:8px;

    text-decoration:none;

    cursor:pointer;

    transition:.2s;

}

.btn-primary{

    background:#0b75ff;

    color:#ffffff;

}

.btn-primary:hover{

    background:#005ad9;

}

.btn-secondary{

    background:#ececec;

    color:#333;

}

.btn-secondary:hover{

    background:#dddddd;

}

/* ---------- Responsive ---------- */

@media(max-width:900px){

    .sidebar{

        position:fixed;

        top:64px;

        left:-260px;

        width:240px;

        height:calc(100vh - 64px);

        transition:left .3s;

        z-index:999;

    }

    .sidebar.open{

        left:0;

    }

    .content{

        padding:20px;

    }

}

@media(max-width:600px){

    .logo{

        font-size:22px;

    }

}

/* ==========================================
   Logout
========================================== */

.logout-form{
    margin:0;
}

.logout-button{

    width:100%;

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

    padding:14px 18px;

    border:none;
    background:transparent;

    color:#374151;
    font-size:15px;
    font-family:inherit;

    cursor:pointer;

    text-align:left;

    transition:.2s;
}

.logout-button:hover{

    background:#f3f4f6;
    color:#2563eb;

}

.logout-button i{

    width:22px;
    text-align:center;
    font-size:16px;

}

.logout-button span{

    flex:1;

}

.locale-form select{
    min-width:112px;
    padding:7px 30px 7px 10px;
    border:1px solid #cbd5e1;
    border-radius:8px;
    background:#fff;
    color:#334155;
    font-size:14px;
}

.visually-hidden{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
}
