body {
    overflow-x: hidden;
    background-color: #212529; /* ダークテーマに合わせた背景色 */
}

#wrapper {
    display: flex;
}

#sidebar-wrapper {
    min-height: 100vh;
    width: 15rem;
    margin-left: -15rem;
    -webkit-transition: margin .25s ease-out;
    -moz-transition: margin .25s ease-out;
    -o-transition: margin .25s ease-out;
    transition: margin .25s ease-out;
}

#sidebar-wrapper .sidebar-heading {
    padding: 0.875rem 1.25rem;
    font-size: 1.2rem;
    font-weight: bold;
    color: white;
}

#sidebar-wrapper .list-group {
    width: 15rem;
}

#page-content-wrapper {
    min-width: 0;
    width: 100%;
}

body.sb-sidenav-toggled #wrapper #sidebar-wrapper {
    margin-left: 0;
}

@media (min-width: 768px) {
    #sidebar-wrapper {
        margin-left: 0;
    }
    #page-content-wrapper {
        min-width: 0;
        width: 100%;
    }
    body.sb-sidenav-toggled #wrapper #sidebar-wrapper {
        margin-left: -15rem;
    }
}

.card {
    border: 0;
}

.card .huge {
    font-size: 2.2rem;
    font-weight: bold;
}

.card-footer {
    background-color: rgba(0,0,0,0.1);
}

.card-footer a, .card-footer a:hover {
    color: rgba(255,255,255,0.8);
    text-decoration: none;
}

/* Toggle switches */
.form-switch .form-check-input:not(:checked) {
    background-color: #6b7280;
    border-color: #4b5563;
}

.form-switch .form-check-input:not(:checked):focus {
    box-shadow: 0 0 0 0.25rem rgba(75, 85, 99, 0.45);
}

.form-switch .form-check-input:not(:checked):hover {
    background-color: #4b5563;
}

.status-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 600;
}

.status-ok {
    background-color: rgba(34, 197, 94, 0.15);
    color: #86efac;
}

.status-missing {
    background-color: rgba(248, 113, 113, 0.2);
    color: #fecaca;
}

/* Date & month inputs */
.date-input,
.month-input {
    cursor: pointer;
}

.date-input:focus,
.month-input:focus {
    box-shadow: 0 0 0 0.25rem rgba(59, 130, 246, 0.25);
    border-color: #3b82f6;
}

.date-input::-webkit-calendar-picker-indicator,
.month-input::-webkit-calendar-picker-indicator {
    filter: invert(35%) sepia(9%) saturate(400%) hue-rotate(169deg) brightness(95%) contrast(90%);
    cursor: pointer;
}

/* --- 投票スケジュール（開催場ごとブロック） --- */
.schedule-place-row td {
    background-color: #2c333a;
    color: #f8f9fa;
    border-top: 2px solid #495057;
    border-bottom: 1px solid #495057;
    letter-spacing: 0.02em;
}

.schedule-race-row td {
    border-top: none;
    background-color: #1f252b;
}

.schedule-race-row:last-child td {
    border-bottom: 1px solid #343a40;
}

.schedule-card .schedule-loading {
    display: none;
}

.schedule-card.is-loading .schedule-loading {
    display: block;
}

.schedule-card.is-loading .schedule-table {
    display: none;
}

/* --- 結果分析（期待値別チャート） --- */
.analysis-chart {
    position: relative;
    min-height: 320px;
}

@media (max-width: 992px) {
    .analysis-chart {
        min-height: 260px;
    }
}

.table-dark.table-striped tbody tr:nth-of-type(odd) {
    --bs-table-accent-bg: rgba(255, 255, 255, 0.03);
}

/* --- 馬券 期待値テーブルのハイライト調整 --- */
.bet-expected-values .table-success {
    --bs-table-bg: rgba(var(--bs-success-rgb), 0.6);
}

.bet-expected-values .table-success > td {
    background-color: rgba(var(--bs-success-rgb), 0.6);
}

.bet-expected-values .table-success .expected-value-cell,
.bet-expected-values .table-success .expected-value-value {
    color: #ffffff;
}

.bet-expected-values .bet-fetch-progress {
    font-size: 0.85rem;
    opacity: 0.85;
}
