html, body{
    margin: 0;
    padding: 0;
    width: 100vw;
    height: 100vh;
    font-family: 'Noto Sans JP';
    font-weight: 400;
}

.maincolor{
    background-color: #0b7302;
}
.highlight{
    background-color: rgba(0, 113, 127, 0.2);
}

.weight300{
    font-weight: 300;
}

.weight400{
    font-weight: 400;
}
.cursor{
    cursor: pointer;
    user-select: none;
}

.cursor:hover{
    background-color: #9EC8CE;
}

.rotate180{
    transform: rotate(180deg);
    display: inline-block;
}

#title_contain{
    width: 100vw;
    height: 10vw;
    text-align: center;
    color: #FFF;
    position: absolute;
    top: 0vw;
}

.title_content{
    height: 100%;
    border-right: 2px solid #FFF;
    float: left;
}


#time_contain{
    width: calc(100vw - 10px);
    height: calc(100vh - 10vw - 10px);
    padding: 5px;
    position: absolute;
    top: 10vw;
    font-size: 3.0vw;
    font-weight: 300;
    overflow-y: scroll;
    text-align: center;
}

#time_scroll{
    border: 2px solid #000;
    background-color: #FFF;
}

#time_title{
    font-size: 2.5vw;
    line-height: 4.6vw;
    height: 4.8vw;
    border-bottom: 1px solid #AAA;
    background-color: #dddddb;
}

#time_title .r3{
    font-size: 0;
}

#time_title .arrival_box{
    display: inline-block;
    line-height: 3.8vw;
    padding: 0 1.2vw;
    border: 0;
    border-radius: 6px;
    background-color: #1b4505;
    color: #FFF;
    font-size: 2.5vw;
    vertical-align: middle;
}

.train_cars_box{
    display: inline-block;
    line-height: 3.2vw;
    padding: 0 0.8vw;
    border: 0;
    border-radius: 6px;
    background-color: #212894;
    color: #FFF;
    font-size: 2.5vw;
    vertical-align: middle;
    white-space: nowrap;
}

#trainCars{
    font-weight: 700;
}

.train_cars_unit{
    font-size: 0.72em;
}

.time_list{
    font-size: 3.5vw;
    line-height: 7.2vw;
    height: 7.2vw;
    font-weight: 400;
    border-bottom: 1px solid #AAA;
}

.time_list.timetable_row:nth-child(even){
    background-color: #FFF;
}

.time_list.timetable_row:nth-child(odd){
    background-color: #E6F4FF;
}

.time_list.timetable_row.highlight{
    background-color: #CFEAF0;
}

.time_list.note_area{
    background-color: #28272b;
    color: #FFF;
}

.time_content{
    float: left;
    border-left: 1px solid #AAA;
    height: 100%;
}

#time_scroll .r0{
    width: 15%;
    border-left: 0;
}
#time_scroll .r1{
    width: 30%;
}
#time_scroll .r2{
    width: calc(15% - 4px);
}
#time_scroll .r3{
    width: 20%;
}
#time_scroll .r4{
    width: 20%;
}

#time_scroll .sec{
    font-weight: 400;
    font-size: 2.5vw;
}

#time_scroll .w0{
    width: calc(20% - 4px);
    border-left: 0;
}
#time_scroll .w1{
    width: 17%;
}
#time_scroll .w2{
    width: 23%;
}
#time_scroll .w3{
    width: 17%;
}
#time_scroll .w4{
    width: 23%;
}



.time_list > .r0{
    font-family: 'Roboto Mono';
    font-weight: 500;
    background-color: inherit;
}

.time_list > .r0.time_between{
    position: relative;
    top: -4vw;
    border-bottom: 1px solid #AAA;
}

#time_scroll > .timetable_row:nth-child(3) > .r0.time_between{
    background-color: #096600;
    color: #FFF;
}

#time_scroll > .timetable_row:nth-child(2) > .r0{
    background-color: #096600;
}
.time_list > .r3{
    font-family: 'Roboto Mono';
    font-weight: 500;
}
.time_list > .r4{
    font-family: 'Roboto Mono';
    font-weight: 500;
}

.pass_time{
    color: #777;
}

.time_list > .w1{
    font-family: 'Roboto Mono';
    font-weight: 500;
}
.time_list > .w3{
    font-family: 'Roboto Mono';
    font-weight: 500;
}

#graph_stns{
    height: calc(100vh - 13vw);
    width: 17vw;
    border-right: 1px solid #AAA;
    background-color: #DDD;
}

#graph_trains{
    display: flex;
    position: absolute;
    top: 7px;
    left: calc(17vw + 8px);
    height: calc(100vh - 13vw);
    width: calc(83vw - 30px - 7vw);
    padding-left: 7vw;
    overflow-x: scroll;
}

.graph_train{
    min-width: 10vw;
    height: 100%;
}

.graph_train > div{
    position: absolute;
    writing-mode: vertical-lr;
}

.graph_train > .graph_time{
    font-family: 'Roboto Mono';
    font-weight: 400;
    font-size: 0.8em;
    margin-left: -1.3em;
    padding-top: 3px;
}

.graph_selectable{
    border-left: 1px solid #000;
    cursor: pointer;
    user-select: none;
}

.graph_selectable:hover{
    font-weight: 400;
    background-image: linear-gradient(90deg, #000 0%, #000 1px, #9EC8C2 1px, #FFF 50%);
}

.graph_ops{
    margin-left: -0.7em;
    background-color: #FFF;
    width: 10vw;
}

#menu{
    width: auto;
    height: 10vw;
    position: absolute;
    top: calc(10vw + 2px);
    font-size: 3.0vw;
    color: #FFF;
    display: none;
}

#menu .title_content{
    width: 10vw;
    text-align: center;
    font-size: 2.5vw;
    float: none;
    border-bottom: 2px solid #FFF;
}

#alertList{
    position: absolute;
    top: 10vw;
    width: 96vw;
    background-color: rgba(64, 64, 64, 0.8);
    color: #FFF;
    padding: 1vw 2vw 1.4vw 2vw;
    font-size: 3.0vw;
    line-height: 5.0vw;
    display: none;
    overflow-y: scroll;
}

#alertList img{
    max-width: 100%;
    max-height: 100%;
}

.login_panel,
.assignment_empty,
.admin_panel{
    padding: 4vw;
    text-align: left;
}

.login_title{
    font-size: 4vw;
    font-weight: 400;
    margin-bottom: 2vw;
}

.login_body,
.login_notice,
.admin_hint{
    font-size: 2.4vw;
    line-height: 4vw;
    margin-bottom: 2vw;
}

.login_notice{
    color: #B00020;
}

button,
input,
select,
textarea{
    font-family: 'Noto Sans JP';
}

.primary_button,
.secondary_button{
    border: 0;
    border-radius: 6px;
    padding: 1.1vw 2vw;
    font-size: 2.4vw;
    cursor: pointer;
}

.primary_button{
    background-color: #0b7302;
    color: #FFF;
}

.primary_button:disabled{
    background-color: #AAA;
    cursor: not-allowed;
}

.secondary_button{
    background-color: #E6F4FF;
    color: #111;
    border: 1px solid #9EC8CE;
}

.assignment_header{
    display: flex;
    justify-content: space-between;
    gap: 2vw;
    align-items: center;
    padding: 1.5vw 2vw;
    border-bottom: 1px solid #AAA;
}

.assignment_user,
.admin_context{
    font-size: 2.2vw;
    line-height: 3.4vw;
}

.assignment_section_title{
    background-color: #dddddb;
    border-top: 1px solid #AAA;
    border-bottom: 1px solid #AAA;
    font-size: 2.4vw;
    line-height: 4.8vw;
    padding: 0 2vw;
    text-align: left;
}

.assignment_work_row{
    display: grid;
    grid-template-columns: 16vw 1fr 12vw;
    gap: 1vw;
    align-items: center;
    min-height: 7.2vw;
    border-bottom: 1px solid #AAA;
    padding: 0 2vw;
}

.assignment_work_no{
    font-size: 3.5vw;
    font-weight: 400;
}

.assignment_work_summary{
    font-size: 2.2vw;
    line-height: 3vw;
    text-align: left;
}

.assignment_badge{
    justify-self: end;
    border-radius: 6px;
    padding: 0.4vw 1vw;
    font-size: 2vw;
    background-color: #DDD;
}

.first_work{
    background-color: #CFEAF0;
}

.assigned_work{
    background-color: #E6F4FF;
}

.unassigned_work{
    color: #666;
    background-color: #F5F5F5;
}

.admin_form_row{
    display: grid;
    grid-template-columns: 18vw 1fr;
    gap: 2vw;
    align-items: center;
    margin-bottom: 1.5vw;
    font-size: 2.4vw;
}

.admin_form_row input,
.admin_form_row select{
    font-size: 2.4vw;
    padding: 0.8vw;
}

.admin_form_row textarea{
    font-size: 2.4vw;
    padding: 0.8vw;
}

.admin_form_row_textarea{
    align-items: start;
}

.admin_actions{
    display: flex;
    gap: 1vw;
    margin: 2vw 0;
}

.admin_work_row{
    display: grid;
    grid-template-columns: 1fr 13vw 12vw;
    gap: 1vw;
    align-items: center;
    min-height: 6.4vw;
    border-bottom: 1px solid #AAA;
    padding: 0.6vw 2vw;
    cursor: pointer;
}

.admin_work_row input{
    transform: scale(1.4);
}

.admin_work_label{
    display: grid;
    grid-template-columns: 14vw 1fr;
    gap: 1vw;
    align-items: center;
}

.admin_work_no{
    font-size: 3vw;
    font-weight: 400;
}

.admin_work_summary{
    font-size: 2vw;
    line-height: 2.8vw;
}

.admin_first_label{
    font-size: 2vw;
}

.admin_import{
    width: calc(100% - 2vw);
    min-height: 20vw;
    font-size: 2vw;
    padding: 1vw;
    margin: 1vw 0;
}

.admin_train_add{
    display: grid;
    grid-template-columns: 1fr 12vw;
    gap: 1vw;
    padding: 1.5vw 2vw;
    border-bottom: 1px solid #AAA;
}

.admin_train_add input{
    font-size: 2.4vw;
    padding: 0.8vw;
}

.admin_remove_button{
    justify-self: end;
}

.admin_alert_panel{
    padding: 1.5vw 2vw 3vw 2vw;
    border-bottom: 1px solid #AAA;
}

.admin_alert_message{
    min-height: 8vw;
    resize: vertical;
}

.admin_alert_current_label{
    font-size: 2vw;
    margin-top: 1.5vw;
}

.admin_alert_current{
    min-height: 3vw;
    margin-top: 0.6vw;
    padding: 1vw;
    border: 1px solid #AAA;
    background-color: #F5F5F5;
    font-size: 2.2vw;
    line-height: 3.2vw;
    white-space: pre-wrap;
    word-break: break-all;
}

/* Keep the screen layout intact when the browser renders the page as PDF. */
@media print{
    @page{
        margin: 10mm;
    }

    html,
    body{
        width: 100%;
        height: auto;
        min-height: 0;
        overflow: visible;
    }

    body{
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    #title_contain{
        position: static;
        top: auto;
        width: 100%;
        height: 10vw;
        page-break-after: avoid;
        break-after: avoid;
    }

    #time_contain{
        position: static;
        top: auto;
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: none;
        padding: 5px 0;
        overflow: visible;
        box-sizing: border-box;
    }

    #time_scroll{
        width: 100%;
        overflow: visible;
        box-sizing: border-box;
    }

    #menu,
    #alertList{
        display: none !important;
    }

    #time_title,
    .timetable_row,
    .note_area{
        page-break-inside: avoid;
        break-inside: avoid;
    }
}
