/* ============================================================
 * exam-ui 个人信息页样式（从 pages/user/info.blade.php 抽离）
 * 引入方式：@section('head') 内 juc_web_asset('/css/user-info.css')
 * ============================================================ */

.fa{
    color: #007BB6;
    margin-bottom: 2px;
}

.avatar {
    width: 73.5px;
    height: 103px;
    display: block;
}

.el-input__inner{
    font-size: 14px
}

/* ===== 图片上传区块 ===== */
/* 图片容器：悬浮显示操作遮罩 */
.jy-upimg {
    position: relative;
    display: inline-block;
    overflow: hidden;
    border-radius: 4px;
    cursor: pointer;
}

.jy-upimg .el-image {
    display: block;
    background: #f0f2f5;
    border: 1px solid #e8ebf2;
    box-sizing: border-box;
}

/* 悬浮遮罩：替换 / 放大 */
.jy-upimg__mask {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, .45);
    color: #fff;
    font-size: 12px;
    display: flex;
    justify-content: space-around;
    align-items: center;
    height: 26px;
    opacity: 0;
    transition: opacity .2s;
}

.jy-upimg:hover .jy-upimg__mask { opacity: 1; }

/* 移动端无 hover：常显底部操作条 */
@media (hover: none) {
    .jy-upimg__mask { opacity: 1; }
}

.jy-upimg__mask span { cursor: pointer; }
.jy-upimg__mask span:hover { text-decoration: underline; }

/* 无图占位框（el-upload 触发器） */
.jy-upimg__placeholder {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 4px;
    background: #f7f8fa;
    border: 1px dashed #d8dee8;
    border-radius: 4px;
    color: #8c939d;
    cursor: pointer;
    transition: border-color .2s, color .2s;
    box-sizing: border-box;
}

.jy-upimg__placeholder:hover {
    border-color: #007BB6;
    color: #007BB6;
}

.jy-upimg__placeholder i { font-size: 20px; }

/* ===== 缺失项聚焦动画：证件三项未上传时引导补传（暖橙取页面既有 hover 提示色 #fd9644） ===== */
/* 外层雷达脉冲：光圈周期性向外扩散，远距离吸引视线 */
.jy-upimg--missing {
    animation: jyUpimgPulse 2s ease-out infinite;
}

@keyframes jyUpimgPulse {
    0% { box-shadow: 0 0 0 0 rgba(253, 150, 68, .45); }
    70% { box-shadow: 0 0 0 10px rgba(253, 150, 68, 0); }
    100% { box-shadow: 0 0 0 0 rgba(253, 150, 68, 0); }
}

/* 内层占位框呼吸：虚线边框与图标颜色随脉冲同节奏明暗，近看明确「待上传」 */
.jy-upimg--missing .jy-upimg__placeholder {
    animation: jyUpimgBreath 2s ease-in-out infinite;
}

@keyframes jyUpimgBreath {
    0%, 100% { border-color: rgba(253, 150, 68, .4); color: #c9946b; }
    50% { border-color: #fd9644; color: #fd9644; }
}

/* 左上角标签转暖橙底，与呼吸节奏同步微调透明度 */
.jy-upimg--missing .jy-img-tag {
    background: #fd9644;
    animation: jyUpimgTag 2s ease-in-out infinite;
}

@keyframes jyUpimgTag {
    0%, 100% { opacity: .75; }
    50% { opacity: 1; }
}

/* 减少动态偏好用户：关闭循环动画，降级为静态暖色边框提示 */
@media (prefers-reduced-motion: reduce) {
    .jy-upimg--missing,
    .jy-upimg--missing .jy-upimg__placeholder,
    .jy-upimg--missing .jy-img-tag {
        animation: none;
    }
    .jy-upimg--missing .jy-upimg__placeholder { border-color: #fd9644; color: #fd9644; }
}

/* ===== 所属单位未填写聚焦：虚线胶囊 + 雷达脉冲光圈（文字固定橙色保证可读，仅光圈脉冲吸引视线） ===== */
#personalInfo .jy-company--missing {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0 14px;
    height: 32px;
    box-sizing: border-box; /* 高度含边框恒为 32px，与编辑态 el-input small 等高，切换不跳动 */
    border: 1px dashed rgba(253, 150, 68, .45);
    border-radius: 999px;
    background: rgba(253, 150, 68, .06);
    color: #fd9644;
    cursor: pointer;
    animation: jyCompanyPulse 2s ease-out infinite;
}

/* 提示文字与编辑铅笔图标随容器统一着色（inherit 跟随容器呼吸，无需独立动画）；去按钮默认内边距贴合胶囊 */
#personalInfo .jy-company--missing .el-button,
#personalInfo .jy-company--missing .el-button i {
    color: inherit;
    padding: 0;
}

/* hover 不使用 Element 默认蓝色，跟随容器呼吸色保持胶囊整体感 */
#personalInfo .jy-company--missing .el-button:hover,
#personalInfo .jy-company--missing .el-button:hover i {
    color: inherit;
}

/* 雷达脉冲：光圈周期性向外扩散，吸引视线 */
@keyframes jyCompanyPulse {
    0% { box-shadow: 0 0 0 0 rgba(253, 150, 68, .45); }
    70% { box-shadow: 0 0 0 8px rgba(253, 150, 68, 0); }
    100% { box-shadow: 0 0 0 0 rgba(253, 150, 68, 0); }
}

/* 减少动态偏好用户：保留静态暖色胶囊提示，仅关闭循环动画 */
@media (prefers-reduced-motion: reduce) {
    #personalInfo .jy-company--missing { animation: none; color: #fd9644; border-color: #fd9644; }
}

/* 上传中进度条容器 */
.jy-upimg__progress {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    background: rgba(255,255,255,.85);
    padding: 2px 4px;
}

/* 头像圆形 */
.jy-upimg--avatar .el-image,
.jy-upimg--avatar img,
.jy-upimg--avatar .jy-upimg__placeholder {
    border-radius: 50%;
}

/* ===== 现代卡片布局（对齐参考设计：简介卡 + 分区字段卡） ===== */
/* tab 切换条底边统一为浅灰蓝细线（覆盖 main.css 的 #ccc） */
#personalInfo .switch_btn { border-bottom-color: #e8ebf2; }

/* tab 容器退化为透明容器，卡片由内部子块呈现（覆盖 main.css 的 #ccc 方角边框与撑屏高度） */
#personalInfo .topic_record {
    border: none;
    background: transparent;
    box-shadow: none;
    min-height: auto;
}

/* 信息区：大屏两列网格（基础信息+证件照并排），小屏降为单列撑满（清掉 main.css 的内边距，间距由 gap 控制） */
#personalInfo .information {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    padding: 0;
}

/* 网格子项最小宽度归零，防止身份证号等长内容撑破列宽 */
#personalInfo .information > * { min-width: 0; }

/* 简介卡与各 tab 末位卡（身份证影像/账号安全）横向撑满两列 */
#personalInfo .jy-profile,
#personalInfo .information > .jy-card:last-child {
    grid-column: 1 / -1;
}

/* 卡片基底：白底、16px 圆角、浅阴影 */
#personalInfo .jy-card,
#personalInfo .jy-profile {
    background: #fff;
    border: 1px solid #e8ebf2;
    border-radius: 16px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
    padding: 24px;
}

/* 个人简介卡：头像 + 姓名/所属单位 横排 */
#personalInfo .jy-profile {
    display: flex;
    align-items: center;
    gap: 24px;
}

#personalInfo .jy-profile__info { min-width: 0; }

#personalInfo .jy-profile__name {
    font-size: 24px;
    font-weight: 600;
    color: #1d1d1f;
    margin: 0 0 6px;
    line-height: 1.3;
}

/* 展示态与编辑态等高（32px 对齐 el-input small），切换不引起位移 */
#personalInfo .jy-profile__company {
    color: #86868b;
    font-size: 14px;
    margin: 0;
    min-height: 32px;
    display: flex;
    align-items: center;
    gap: 8px;
}

#personalInfo .jy-profile__company .fa { font-size: 14px; }

/* 编辑图标按钮：内联 font-size:16px 会把按钮撑到 36px 高，使展示态正文行高于编辑态（32px），切换时姓名垂直跳动；固定 32px 与编辑态等高 */
#personalInfo .jy-profile__company .el-button {
    height: 32px;
    padding: 0;
    display: inline-flex;
    align-items: center;
}

/* 行内编辑区：输入框定宽、控件间距统一 */
#personalInfo .jy-profile__edit {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0;
    min-height: 32px;
}

#personalInfo .jy-profile__edit .el-input {
    width: 260px;
    max-width: 100%;
}

/* 卡片小节标题：弱化色 + 底部细线（下外边距与内容拉开，避免贴住图片边框形成双线） */
#personalInfo .jy-card__title {
    font-size: 14px;
    color: #86868b;
    font-weight: 500;
    letter-spacing: 0.5px;
    margin: 0 0 16px;
    border-bottom: 1px solid #f0f0f0;
    padding-bottom: 12px;
}

/* 字段：label 在上、取值在下 */
#personalInfo .jy-field { margin-top: 16px; }

#personalInfo .jy-field > label {
    display: block;
    font-size: 12px;
    color: #86868b;
    margin-bottom: 4px;
}

#personalInfo .jy-field__val {
    font-size: 16px;
    font-weight: 500;
    color: #1d1d1f;
    display: flex;
    align-items: center;
    gap: 8px;
    font-variant-numeric: tabular-nums;
    word-break: break-all;
}

/* 字段内操作图标：随取值字号，hover 副色（与列表页胶囊按钮 hover 一致） */
#personalInfo .jy-field__val .fa { font-size: 16px; }
#personalInfo .jy-field__val .fa.pointer:hover { color: #fd9644; }

/* 身份证影像：两列网格 */
#personalInfo .jy-photos {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}

#personalInfo .jy-photos__item { flex: 1; min-width: 200px; }

/* 图片角标蒙层：置于图片容器内左上角，随 hover 抬升一起动画；左上圆角交由照片容器统一裁剪 */
#personalInfo .jy-img-tag {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
    padding: 4px 10px;
    font-size: 12px;
    color: #fff;
    background: rgba(0, 0, 0, .45);
    border-radius: 0 0 8px 0;
}

/* 照片：10px 圆角、悬浮抬升（与参考布局一致） */
#personalInfo .jy-photos .jy-upimg {
    transition: transform .3s ease, box-shadow .3s ease;
}

#personalInfo .jy-photos .jy-upimg:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08);
}

/* 移动端：卡片单列撑满、简介卡纵向居中、照片单列 */
@media (max-width: 767.98px) {
    #personalInfo .information { grid-template-columns: 1fr; }
    #personalInfo .jy-profile {
        flex-direction: column;
        text-align: center;
    }
    #personalInfo .jy-profile__company { justify-content: center; }
    /* 固定信息区宽度：展示态/编辑态内容宽度不同，避免切换时姓名水平跳动 */
    #personalInfo .jy-profile__info {
        width: 100%;
    }
    /* 编辑区：输入框独占一行撑满，取消/确认按钮第二行等宽并排 */
    #personalInfo .jy-profile__edit .el-input {
        flex: 1 1 100%;
        width: 100%;
        min-width: 0;
    }
    #personalInfo .jy-profile__edit .el-button {
        flex: 1;
        /* 清除 Element UI 相邻按钮默认 margin-left，间距统一由 gap 控制 */
        margin-left: 0;
    }
    #personalInfo .jy-photos { flex-direction: column; }
}

/* ===== 裁剪弹窗 ===== */
.jy-crop-dialog .el-dialog__body { padding: 10px 20px; }

.jy-crop__stage {
    width: 100%;
    max-height: 60vh;
    overflow: hidden;
    margin: 0 auto;
}

.jy-crop__stage img { display: block; max-width: 100%; }

/* 头像圆形裁剪：裁剪框/高亮层圆角化，隐藏方形网格与四角手柄 */
.jy-crop--circle .cropper-view-box,
.jy-crop--circle .cropper-highlight {
    border-radius: 50%;
}

.jy-crop--circle .cropper-line,
.jy-crop--circle .cropper-point {
    display: none;
}

/* 圆形裁剪时遮罩层配合挖圆（Cropper 遮罩用 4 块矩形实现，圆角化最外层即可） */
.jy-crop--circle .cropper-bg + .cropper-move {
    border-radius: 50%;
}

/* 头像圆形预览 */
.jy-crop__preview-circle {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto;
}

.jy-crop__hint { color: #909399; font-size: 12px; text-align: center; margin-top: 6px; }

/* 移动端：弹窗收窄、按钮全宽 */
@media (max-width: 767.98px) {
    .jy-crop-dialog {
        width: 94% !important;
        margin-top: 8vh !important;
    }
    .jy-crop-dialog .el-dialog__body { padding: 8px 12px; }
}
