:root {
    --theme-color: #6eb92d;
    --theme-color-focus: #62a428;
    --theme-color-active: #5c9b25;
    --theme-color-disabled: #9eda69;
    --theme-color-focus-shadow: rgba(110, 185, 45, 0.2);
    --form-control-bg: #dcdcdc;
    --form-control-placeholder: #999999;
    --alert-success: #e2f1d5;
    --table-stripe: #f0f0f0;
    --correct: #0096e4;
    --incorrect: #fa5656;
    --choice1: #9bed0c;
    --choice2: #ffcc00;
}

.btn-success {
    --bs-btn-color: #fff;
    --bs-btn-bg: #6eb92d;
    --bs-btn-border-color: #6eb92d;
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #62a428;
    --bs-btn-hover-border-color: #62a428;
    --bs-btn-focus-shadow-rgb: 110, 185, 45;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #5c9b25;
    --bs-btn-active-border-color: #5c9b25;
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: #9eda69;
    --bs-btn-disabled-border-color: #9eda69;
}

html {
    position: relative;
    min-height: 100%;
    font-size: 18px;
}

@media (max-width: 1080px) {
    html {
        font-size: 14px;
    }
}

body {
    font-family: "Noto Sans JP", system-ui, sans-serif;
    font-size: 1.1rem;
}

h1 {
    font-weight: bold;
}

.bg-striped {
    background-color: var(--table-stripe);
}

label.required::after {
    content: "*";
    color: var(--incorrect);
}

.white-space-pre-wrap {
    white-space: pre-wrap !important;
}

/* layout */
a.navbar-brand {
    white-space: normal;
    text-align: center;
    word-break: break-all;
}

.navbar-brand div.svg-icon.house {
    width: 2rem;
    height: 2rem;
    background-color: var(--theme-color);
}

.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
    color: #fff;
    background-color: #1b6ec2;
    border-color: #1861ac;
}

.footer {
    position: absolute;
    bottom: 0;
    width: 100%;
    white-space: nowrap;
    line-height: 60px;
}

/* link */
a, .btn-link, .btn-link:hover, .btn-link:active, .btn-link:focus-visible {
    color: var(--theme-color) !important;
}

    .btn-link:focus-visible {
        box-shadow: none;
        outline: -webkit-focus-ring-color auto 1px;
    }

/* btn */
.btn {
    padding: 0.75rem 1rem;
    font-size: 1.3rem;
}

.btn .spinner {
    display: none;
    width: 1.8rem;
    height: 1.8rem;
    border: 0.3rem solid;
    border-right-color: transparent;
    border-radius: 50%;
    vertical-align: -0.3rem;
    margin-right: 0.5rem;
    animation: 1s linear infinite rotate;
}

.btn[disabled] .spinner {
    display: inline-block;
}

@keyframes rotate {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(360deg);
    }
}

/* form-control */
.form-control {
    background-color: var(--form-control-bg);
    font-size: 1.1rem;
}

    .form-control::placeholder {
        color: var(--form-control-placeholder);
    }

    .form-control:focus, .form-check-input:focus {
        border-color: var(--theme-color);
        box-shadow: 0 0 0 0.25rem var(--theme-color-focus-shadow);
    }

.form-check-input:checked {
    background-color: var(--theme-color);
    border-color: var(--theme-color);
}

.form-label, .col-form-label {
    font-weight: bold;
}

.input-validation-error {
    border-color: var(--bs-form-invalid-border-color);
}

    .input-validation-error:focus {
        border-color: var(--bs-form-invalid-border-color);
        box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), .25)
    }

span.form-control {
    background-color: transparent;
    border: 1px solid transparent;
}

/* container-table */
@media (min-width: 576px) {
    .container-table td:first-child, .container-table th:first-child {
        padding-left: calc((100vw - 540px) / 2 + 0.5rem);
    }

    .container-table td:last-child, .container-table th:last-child {
        padding-right: calc((100vw - 540px) / 2 + 0.5rem);
    }
}

@media (min-width: 768px) {
    .container-table td:first-child, .container-table th:first-child {
        padding-left: calc((100vw - 720px) / 2 + 0.5rem);
    }

    .container-table td:last-child, .container-table th:last-child {
        padding-right: calc((100vw - 720px) / 2 + 0.5rem);
    }
}

@media (min-width: 992px) {
    .container-table td:first-child, .container-table th:first-child {
        padding-left: calc((100vw - 960px) / 2 + 0.5rem);
    }

    .container-table td:last-child, .container-table th:last-child {
        padding-right: calc((100vw - 960px) / 2 + 0.5rem);
    }
}

@media (min-width: 1200px) {
    .container-table td:first-child, .container-table th:first-child {
        padding-left: calc((100vw - 1140px) / 2 + 0.5rem);
    }

    .container-table td:last-child, .container-table th:last-child {
        padding-right: calc((100vw - 1140px) / 2 + 0.5rem);
    }
}

@media (min-width: 1400px) {
    .container-table td:first-child, .container-table th:first-child {
        padding-left: calc((100vw - 1320px) / 2 + 0.5rem);
    }

    .container-table td:last-child, .container-table th:last-child {
        padding-right: calc((100vw - 1320px) / 2 + 0.5rem);
    }
}

/* alert */
.alert-success {
    background-color: var(--alert-success);
}

/* svg */
div.svg-icon {
    mask-size: contain;
    mask-repeat: no-repeat;
    mask-position: center;
}

.svg-icon.house {
    mask-image: url("../svg/house-fill.svg")
}

.svg-icon.list {
    mask-image: url("../svg/list.svg")
}

.svg-icon.people {
    mask-image: url("../svg/people-fill.svg")
}

.svg-icon.play {
    mask-image: url("../svg/play-fill.svg")
}

.svg-icon.arrow-left-circle {
    mask-image: url("../svg/arrow-left-circle.svg");
}

.svg-icon.building-fill {
    mask-image: url("../svg/building-fill.svg");
}

.svg-icon.clock-fill {
    mask-image: url("../svg/clock-fill.svg");
}

.svg-icon.play-circle-fill {
    mask-image: url("../svg/play-circle-fill.svg");
}

.svg-icon.bell-fill {
    mask-image: url("../svg/bell-fill.svg");
}

.svg-icon.person-plus-fill {
    mask-image: url("../svg/person-plus-fill.svg");
}
