.pageTitle {

    font-size: 28px;

    font-weight: bold;

    color: #2d3c6b;

    text-align: center;

    margin-top: 10px;

    margin-bottom: 40px;

}

/* ===================== */
/* 上部操作エリア */
/* ===================== */

.actionArea {

    display: flex;

    justify-content: space-between;

    align-items: center;

    gap: 20px;

    margin-bottom: 40px;

}

.userCount {

    font-size: 18px;

    font-weight: 600;

    color: #7d879d;

    white-space: nowrap;

}

/* ===================== */
/* 検索 */
/* ===================== */

.searchArea {

    flex: 1;

    max-width: 400px;

}

.searchBox {

    position: relative;

    width: 100%;

}

.searchBox i {

    position: absolute;

    left: 18px;

    top: 50%;

    transform: translateY(-50%);

    color: #b8c2d8;

    font-size: 16px;

}

#searchInput {

    width: 100%;

    height: 56px;

    padding-left: 48px;

    border: 2px solid #dbe5f4;

    border-radius: 15px;

    font-size: 16px;

    box-sizing: border-box;

    transition: 0.25s;

}

#searchInput:focus {

    outline: none;

    border-color: #4f7cff;

    box-shadow:
        0 0 0 4px rgba(79, 124, 255, 0.15);

}

/* ===================== */
/* 利用者追加ボタン */
/* ===================== */

.addButton {

    background: #4f7cff;

    color: white;

    border: none;

    border-radius: 16px;

    padding: 14px 24px;

    font-size: 16px;

    font-weight: bold;

    cursor: pointer;

    transition: 0.25s;

    white-space: nowrap;

}

.addButton:hover {

    transform: translateY(-3px);

    box-shadow:
        0 8px 20px rgba(79, 124, 255, 0.3);

}

/* ===================== */
/* 利用者一覧 */
/* ===================== */

.userList {

    display: grid;

    gap: 20px;

}

/* ===================== */
/* 利用者カード */
/* ===================== */

.userCard {

    background: white;

    border-radius: 24px;

    padding: 24px;

    border: 2px solid #edf2fb;

    transition: 0.25s;

}

.editButton:hover {

    transform: translateY(-2px);

    box-shadow:
        0 8px 20px rgba(79, 124, 255, 0.25);

}

.deleteButton:hover {

    transform: translateY(-2px);

    box-shadow:
        0 8px 20px rgba(239, 68, 68, 0.25);

}

.cardHeader {

    display: flex;

    justify-content: space-between;

    align-items: center;

    margin-bottom: 16px;

}

.userCard h3 {

    margin: 0;

    font-size: 24px;

    color: #2d3c6b;

}

/* ===================== */
/* 情報行 */
/* ===================== */

.deviceId,
.infoRow {

    display: flex;

    align-items: center;

    gap: 10px;

    color: #7d879d;

    font-size: 16px;

    font-weight: 600;

    margin-top: 10px;

}

.deviceId i,
.infoRow i {

    width: 18px;

    color: #4f7cff;

}

/* ===================== */
/* 状態バッジ */
/* ===================== */

.okBadge {

    background: #dcfce7;

    color: #16a34a;

    padding: 8px 16px;

    border-radius: 999px;

    font-size: 14px;

    font-weight: bold;

}

.waitBadge {

    background: #fef3c7;

    color: #d97706;

}

.ngBadge {

    background: #fee2e2;

    color: #dc2626;

    padding: 8px 16px;

    border-radius: 999px;

    font-size: 14px;

    font-weight: bold;

}

.okBadge,
.waitBadge,
.ngBadge,
.notConnectedBadge {

    padding: 12px 22px;

    border-radius: 999px;

    font-size: 16px;

    font-weight: 700;

}

.okBadge {
    background: #dcfce7;
    color: #16a34a;
}

.waitBadge {
    background: #fef3c7;
    color: #d97706;
}

.ngBadge {
    background: #fee2e2;
    color: #dc2626;
}

.notConnectedBadge {
    background: #eef4ff;
    color: #64748b;
    border: 1px solid #cbd5e1;
}

/* =====================
   最終受信
===================== */

.receiveArea {

    margin-top: 15px;

    padding: 12px 16px;

    background: #f8fbff;

    border: 1px solid #dfe7f5;

    border-radius: 12px;

}

.receiveLabel {

    font-size: 14px;

    font-weight: 600;

    color: #7d879d;

    margin-bottom: 6px;

}

.receiveTime {

    margin-top: 4px;

    color: #334155;

    font-size: 18px;

    font-weight: 600;

    line-height: 1.5;

}

.receiveDate {

    font-size: 18px;

    font-weight: 600;

}

.receiveClock {

    font-size: 22px;

    font-weight: 700;

    color: #2d3c6b;

}


/* ===================== */
/* ボタンエリア */
/* ===================== */

.buttonArea {

    display: flex;

    justify-content: flex-end;

    gap: 16px;

    margin-top: 24px;

}

.editButton {

    width: 140px;

    height: 52px;

    font-size: 16px;

    background: #4f7cff;

    color: white;

    border: none;

    border-radius: 12px;

    font-weight: bold;

    cursor: pointer;

}

.deleteButton {

    width: 140px;

    height: 52px;

    font-size: 16px;

    background: #ef4444;

    color: white;

    border: none;

    border-radius: 12px;

    font-weight: bold;

    cursor: pointer;

}

.editButton,
.deleteButton {

    display: flex;

    align-items: center;

    justify-content: center;

    gap: 8px;

}

/* =====================
   状態表示ライン
===================== */

.statusLine {

    display: flex;

    align-items: center;

    gap: 10px;

    margin-top: 12px;

    margin-bottom: 12px;

}

.statusTextLine {

    font-size: 16px;

    font-weight: 700;

}

/* 丸 */

.statusDot {

    width: 12px;

    height: 12px;

    border-radius: 50%;

}

/* 接続中 */

.okBadgeDot {

    background: #22c55e;

    box-shadow:
        0 0 10px rgba(34, 197, 94, 0.4);

}

/* 未接続 */

.waitBadgeDot {

    background: #f59e0b;

    box-shadow:
        0 0 10px rgba(245, 158, 11, 0.4);

}

/* 異常 */

.ngBadgeDot {

    background: #ef4444;

    box-shadow:
        0 0 10px rgba(239, 68, 68, 0.4);

}

.infoRow {

    display: flex;

    align-items: center;

    gap: 10px;

    margin-top: 12px;

    color: #64748b;

    font-size: 16px;

    font-weight: 600;

}

.infoRow i {

    color: #4f7cff;

    width: 18px;

}

.notConnected {

    background: #e5e7eb;
    color: #6b7280;

}

#searchInput::placeholder {
    color: #c7d0e0;
}

.attendanceNumber {

    font-weight: 700;

    color: #64748b;

}

/* =====================
   タブレット
===================== */

@media (min-width: 768px) and (max-width: 1024px) {

    .actionArea {
        display: flex;
        flex-direction: row;
        align-items: center;
        flex-wrap: wrap;
    }

    .searchArea {
        flex: 1;
        width: 100%;
        max-width: 100%;
    }

    .buttonArea {
        flex-wrap: wrap;
    }

}

/* ===================== */
/* スマホ */
/* ===================== */

@media (max-width: 767px) {

    .actionArea {

        flex-direction: column;

        align-items: stretch;

    }

    .searchArea {

        max-width: none;

    }

    .addButton {

        width: 100%;

    }

    .buttonArea {

        flex-direction: column;

    }

    .editButton,
    .deleteButton {

        width: 100%;
        height: 46px;
        font-size: 15px;

    }

    .cardHeader {

        align-items: center;

        flex-direction: column;

        align-items: flex-start;

        gap: 10px;

    }

    .okBadge,
    .waitBadge,
    .ngBadge,
    .notConnected {

        display: inline-flex;

        align-items: center;

        justify-content: center;

        font-size: 13px;

        padding: 8px 14px;

    }

    .notConnectedBadge {

        display: inline-flex;

        align-items: center;

        justify-content: center;

        background: #eef4ff;

        color: #64748b;

        border: 1px solid #cbd5e1;

        padding: 12px 22px;

        border-radius: 999px;

        font-size: 16px;

        font-weight: 700;

    }

    .userCard.notConnected {

        border-left: 6px solid #94a3b8;

        background: #f8fbff;

    }

    .footer {
        margin-top: 40px;
    }

    .userCard {

        padding: 18px;

    }

    .userCard h3 {

        font-size: 20px;

        word-break: break-word;

    }

    .receiveClock {

        font-size: 18px;

    }

    .receiveDate {
        font-size: 15px;
    }

    .receiveTime {
        word-break: break-all;
    }

    .userCount {
        text-align: center;
    }

    #searchInput {
        height: 50px;
        font-size: 15px;
    }

    @media (hover: hover) {

        .addButton:hover {

            transform: translateY(-3px);

            box-shadow:
                0 8px 20px rgba(79, 124, 255, 0.3);

        }

        .editButton:hover {

            transform: translateY(-2px);

            box-shadow:
                0 8px 20px rgba(79, 124, 255, 0.25);

        }

        .deleteButton:hover {

            transform: translateY(-2px);

            box-shadow:
                0 8px 20px rgba(239, 68, 68, 0.25);

        }

    }

}