/* marginクラス */
/* Start of Selection */
.u-m-1 {
    margin: 1px !important;
}
.u-m-2 {
    margin: 2px !important;
}
.u-m-3 {
    margin: 3px !important;
}
.u-m-4 {
    margin: 4px !important;
}
.u-m-5 {
    margin: 5px !important;
}
.u-m-6 {
    margin: 6px !important;
}
.u-m-7 {
    margin: 7px !important;
}
.u-m-8 {
    margin: 8px !important;
}
.u-m-9 {
    margin: 9px !important;
}
.u-m-10 {
    margin: 10px !important;
}
.u-m-20 {
    margin: 20px !important;
}
.u-m-30 {
    margin: 30px !important;
}
.u-mt-1 {
    margin-top: 1px !important;
}
.u-mt-2 {
    margin-top: 2px !important;
}
.u-mt-3 {
    margin-top: 3px !important;
}
.u-mt-4 {
    margin-top: 4px !important;
}
.u-mt-5 {
    margin-top: 5px !important;
}
.u-mt-6 {
    margin-top: 6px !important;
}
.u-mt-7 {
    margin-top: 7px !important;
}
.u-mt-8 {
    margin-top: 8px !important;
}
.u-mt-9 {
    margin-top: 9px !important;
}
.u-mt-10 {
    margin-top: 10px !important;
}
.u-mt-20 {
    margin-top: 20px !important;
}
.u-mt-30 {
    margin-top: 30px !important;
}
.u-mb-1 {
    margin-bottom: 1px !important;
}
.u-mb-2 {
    margin-bottom: 2px !important;
}
.u-mb-3 {
    margin-bottom: 3px !important;
}
.u-mb-4 {
    margin-bottom: 4px !important;
}
.u-mb-5 {
    margin-bottom: 5px !important;
}
.u-mb-6 {
    margin-bottom: 6px !important;
}
.u-mb-7 {
    margin-bottom: 7px !important;
}
.u-mb-8 {
    margin-bottom: 8px !important;
}
.u-mb-9 {
    margin-bottom: 9px !important;
}
.u-mb-10 {
    margin-bottom: 10px !important;
}
.u-mb-20 {
    margin-bottom: 20px !important;
}
.u-mb-30 {
    margin-bottom: 30px !important;
}
.u-mr-1 {
    margin-right: 1px !important;
}
.u-mr-2 {
    margin-right: 2px !important;
}
.u-mr-3 {
    margin-right: 3px !important;
}
.u-mr-4 {
    margin-right: 4px !important;
}
.u-mr-5 {
    margin-right: 5px !important;
}
.u-mr-6 {
    margin-right: 6px !important;
}
.u-mr-7 {
    margin-right: 7px !important;
}
.u-mr-8 {
    margin-right: 8px !important;
}
.u-mr-9 {
    margin-right: 9px !important;
}
.u-mr-10 {
    margin-right: 10px !important;
}
.u-mr-20 {
    margin-right: 20px !important;
}
.u-mr-30 {
    margin-right: 30px !important;
}
.u-ml-1 {
    margin-left: 1px !important;
}
.u-ml-2 {
    margin-left: 2px !important;
}
.u-ml-3 {
    margin-left: 3px !important;
}
.u-ml-4 {
    margin-left: 4px !important;
}
.u-ml-5 {
    margin-left: 5px !important;
}
.u-ml-6 {
    margin-left: 6px !important;
}
.u-ml-7 {
    margin-left: 7px !important;
}
.u-ml-8 {
    margin-left: 8px !important;
}
.u-ml-9 {
    margin-left: 9px !important;
}
.u-ml-10 {
    margin-left: 10px !important;
}
.u-ml-20 {
    margin-left: 20px !important;
}
.u-ml-30 {
    margin-left: 30px !important;
}

/* 背景色のクラス */
.u-bg-black {
    background-color: black !important;
}
.u-bg-white {
    background-color: white !important;
}
.u-bg-red {
    background-color: red !important;
}
.u-bg-green {
    background-color: green !important;
}
.u-bg-light-green {
    background-color: #c7eeb2 !important;
}
.u-bg-blue {
    background-color: blue !important;
}
.u-bg-light-blue {
    background-color: #afd4f8 !important;
}
.u-bg-yellow {
    background-color: yellow !important;
}
.u-bg-light-yellow {
    background-color: rgba(243, 243, 131, 0.945) !important;
}
.u-bg-gray {
    background-color: gray !important;
}
.u-bg-silver {
    background-color: silver !important;
}
.u-bg-orange {
    background-color: orange !important;
}
.u-bg-purple {
    background-color: purple !important;
}
.u-bg-brown {
    background-color: brown !important;
}

/* 文字色のクラス */
.u-c-black {
    color: black !important;
}
.u-c-white {
    color: white !important;
}
.u-c-red {
    color: red !important;
}
.u-c-green {
    color: green !important;
}
.u-c-blue {
    color: blue !important;
}
.u-c-yellow {
    color: yellow !important;
}
.u-c-gray {
    color: gray !important;
}
.u-c-orange {
    color: orange !important;
}
.u-c-purple {
    color: purple !important;
}
.u-c-brown {
    color: brown !important;
}

/* 文字サイズのクラス */
.u-fs-2 {
    font-size: 2px !important;
}
.u-fs-4 {
    font-size: 4px !important;
}
.u-fs-6 {
    font-size: 6px !important;
}
.u-fs-8 {
    font-size: 8px !important;
}
.u-fs-10 {
    font-size: 10px !important;
}
.u-fs-12 {
    font-size: 12px !important;
}
.u-fs-14 {
    font-size: 14px !important;
}
.u-fs-16 {
    font-size: 16px !important;
}
.u-fs-18 {
    font-size: 18px !important;
}
.u-fs-20 {
    font-size: 20px !important;
}
.u-fs-24 {
    font-size: 24px !important;
}
.u-fs-28 {
    font-size: 28px !important;
}
.u-fs-32 {
    font-size: 32px !important;
}
.u-fs-36 {
    font-size: 36px !important;
}
.u-fs-40 {
    font-size: 40px !important;
}

/* テキストのデザインクラス */
.u-fw-bold {
    font-weight: bold !important;
}
.u-fs-italic {
    font-style: italic !important;
}
.u-td-underline {
    text-decoration: underline !important;
}
.u-tt-uppercase {
    text-transform: uppercase !important;
}
.u-tt-lowercase {
    text-transform: lowercase !important;
}
.u-tt-capitalize {
    text-transform: capitalize !important;
}

/* テキストアライメントクラス */
.u-ta-left {
    text-align: left !important;
}
.u-ta-center {
    text-align: center !important;
}
.u-ta-right {
    text-align: right !important;
}
.u-ta-justify {
    text-align: justify !important;
}

/* ローディング */
.loading-window {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #fff;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 1000;
}

.loading-spinner {
    width: 50px;
    height: 50px;
    border: 5px solid #f3f3f3;
    border-top: 5px solid #3498db;
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.loading-text {
    margin-top: 15px;
    font-family: Arial, sans-serif;
    color: #333;
}

/* 学校選択ウィジェット */
.school-select-widget {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
@media (min-width: 768px) {
    .school-select-widget {
        flex-direction: row;
        align-items: center;
    }
}
.btn-outline-school {
    color: #337ab7;
    background-color: transparent;
    border: 1px solid #337ab7;
    white-space: nowrap;
}
.btn-outline-school:hover,
.btn-outline-school:focus {
    color: #fff;
    background-color: #337ab7;
    border-color: #2e6da4;
}

/* 学校検索モーダル */
.school-keyword-input {
    width: 100%;
    box-sizing: border-box;
}
/* front.css の .btn { width: 200px } より詳細度を上げて上書き */
.btn.school-search-btn {
    display: block;
    width: auto;
    min-width: 120px;
    margin: 6px auto 0;
}
.btn.school-search-btn:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(51, 122, 183, .25);
}
/* admin: form-inline 内では inline-block で入力欄の下端に揃える */
.form-inline .btn.school-search-btn {
    display: inline-block;
    width: auto;
    margin: 0 0 0 8px;
    vertical-align: bottom;
}
.school-search-list .list-group-item {
    padding: 10px 12px;
}
.school-name {
    font-weight: bold;
    font-size: 14px;
    margin: 0;
}
.school-type {
    margin-left: 6px;
    font-size: 11px;
    color: #777;
    font-weight: normal;
}
.school-pref {
    margin: 4px 0 0;
    color: #666;
    font-size: 12px;
}
.selected-school {
    display: inline-block;
    padding: 0.375rem 0.75rem;
    background: #f8f9fa;
    border: 1px solid #dee2e6;
    border-radius: .25rem;
}
.selected-school.is-placeholder {
    color: #6c757d;
}