/* ============================================================
 * user-center.css
 * v2.4.0 - 新增：挑战列表全宽表格、100%窗口填充、徽章展开、能力成长率
 * 前台：个人中心 + 进度条 + 表单 + 勋章墙 + 弹窗 + 点评
 * ============================================================ */

/* ── 基础容器 ── */
.cylxd-user-center {
    max-width: 900px;
    margin: 0 auto;
    padding: 20px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}

/* ── 提示条 ── */
.cylxd-notice {
    background: #fff8e1;
    border: 1px solid #ffe082;
    padding: 16px;
    border-radius: 8px;
    text-align: center;
    font-size: 15px;
}
.cylxd-notice a { color: #667eea; font-weight: 600; }
.cylxd-error { background: #fdecea; border-color: #f5c6cb; color: #721c24; }

/* ── 资料条 ── */
.cylxd-profile-bar {
    background: linear-gradient(135deg, #667eea, #764ba2);
    color: #fff;
    padding: 12px 20px;
    border-radius: 10px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    font-size: 14px;
}
.cylxd-profile-bar .button {
    margin-left: auto;
    background: rgba(255,255,255,.2);
    color: #fff;
    border: 1px solid rgba(255,255,255,.4);
}
.cylxd-profile-bar .button:hover {
    background: rgba(255,255,255,.35);
    color: #fff;
}

/* ── 资料弹窗 ── */
#cylxd-profile-modal {
    position: fixed;
    inset: 0;
    z-index: 9998;
    display: none; /* JS 会设置为 flex */
}

#cylxd-profile-modal .cylxd-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}

#cylxd-profile-modal .cylxd-modal-content {
    position: relative;
    z-index: 2;
    background: #fff;
    border-radius: 16px;
    padding: 30px;
    max-width: 420px;
    width: 90%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0,0,0,0.25);
    animation: cylxdFadeIn 0.25s ease;
}

#cylxd-profile-modal label {
    display: block;
    margin-bottom: 16px;
    font-weight: 600;
    color: #333;
}

#cylxd-profile-modal input,
#cylxd-profile-modal select,
#cylxd-profile-modal textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 8px;
    margin-top: 6px;
    font-size: 14px;
    font-family: inherit;
}

#cylxd-profile-modal input:focus,
#cylxd-profile-modal select:focus,
#cylxd-profile-modal textarea:focus {
    border-color: #667eea;
    outline: none;
    box-shadow: 0 0 0 3px rgba(102,126,234,.15);
}

/* ── 修改密码 / 注销账号弹窗 ── */
#cylxd-password-modal,
#cylxd-delete-account-modal {
    position: fixed;
    inset: 0;
    z-index: 9998;
    display: none; /* JS 会设置为 flex */
}

#cylxd-password-modal .cylxd-modal-overlay,
#cylxd-delete-account-modal .cylxd-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}

#cylxd-password-modal .cylxd-modal-content,
#cylxd-delete-account-modal .cylxd-modal-content {
    position: relative;
    z-index: 2;
    background: #fff;
    border-radius: 16px;
    padding: 30px;
    max-width: 420px;
    width: 90%;
    box-shadow: 0 20px 60px rgba(0,0,0,0.25);
    animation: cylxdFadeIn 0.25s ease;
}

#cylxd-password-modal .cylxd-modal-content h3,
#cylxd-delete-account-modal .cylxd-modal-content h3 {
    margin: 0 0 18px;
    font-size: 20px;
    color: #333;
}

#cylxd-password-modal label,
#cylxd-delete-account-modal label {
    display: block;
    margin-bottom: 14px;
    font-weight: 600;
    color: #333;
}

#cylxd-password-modal input[type="password"],
#cylxd-delete-account-modal input[type="password"] {
    width: 100%;
    box-sizing: border-box;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 8px;
    margin-top: 6px;
    font-size: 14px;
    font-family: inherit;
}

#cylxd-password-modal input[type="password"]:focus,
#cylxd-delete-account-modal input[type="password"]:focus {
    border-color: #667eea;
    outline: none;
    box-shadow: 0 0 0 3px rgba(102,126,234,.15);
}

#cylxd-password-modal .button,
#cylxd-delete-account-modal .button {
    display: inline-block;
    padding: 9px 20px;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    cursor: pointer;
    margin-right: 8px;
    margin-top: 4px;
}

#cylxd-password-modal .button-primary {
    background: #667eea;
    color: #fff;
}

#cylxd-password-modal .button-primary:hover,
#cylxd-delete-account-modal .button:hover {
    opacity: .9;
}

/* ── 注销账号弹窗（危险操作强化） ── */
#cylxd-delete-account-modal .cylxd-modal-content {
    max-width: 460px;
}

#cylxd-delete-account-modal .cylxd-modal-content h3 {
    color: #e74c3c;
    font-size: 21px;
}

#cylxd-delete-account-modal .cylxd-warning {
    background: #fdf1ef;
    border: 1px solid #f3c6c1;
    border-radius: 8px;
    color: #c0392b;
    font-size: 13px;
    padding: 10px 12px;
    margin: 0 0 16px;
    line-height: 1.6;
}

#cylxd-delete-account-modal ul {
    color: #555;
    font-size: 13px;
    margin: 0 0 16px 20px;
    padding-left: 4px;
    line-height: 1.9;
}

#cylxd-delete-account-modal hr {
    margin: 18px 0;
    border: none;
    border-top: 1px solid #eee;
}

#cylxd-delete-account-modal .cylxd-confirm-btn {
    background: #e74c3c;
    color: #fff;
    font-weight: 600;
}

#cylxd-delete-account-modal .cylxd-confirm-btn:hover {
    background: #c0392b;
}

#cylxd-delete-account-modal .cylxd-confirm-btn:focus {
    box-shadow: 0 0 0 3px rgba(231, 76, 60, .25);
    outline: none;
}

/* ── 进度条 ── */
.cylxd-progress-section {
    background: #fff;
    border-radius: 12px;
    padding: 24px;
    margin-bottom: 24px;
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
.cylxd-progress-bar {
    display: flex;
    gap: 6px;
    margin: 16px 0;
    flex-wrap: wrap;
}
.cylxd-week-dot {
    width: 36px; height: 36px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 13px; font-weight: 600;
    background: #f0f0f0; color: #999;
    transition: all .3s;
}
.cylxd-week-dot.done {
    background: linear-gradient(135deg, #667eea, #764ba2);
    color: #fff;
    box-shadow: 0 2px 6px rgba(102,126,234,.4);
}
.cylxd-progress-text {
    font-size: 14px;
    color: #666;
}

/* ── 工作台布局：进度卡头部 ── */
.cylxd-workbench-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}
.cylxd-workbench-stat {
    flex-shrink: 0;
    font-size: 30px;
    font-weight: 800;
    color: #667eea;
    line-height: 1;
    background: linear-gradient(135deg, #667eea, #764ba2);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.cylxd-workbench-stat small {
    font-size: 13px;
    font-weight: 600;
    color: #999;
    -webkit-text-fill-color: #999;
}

/* ── 启动仪式卡 ── */
.cylxd-start-hero {
    text-align: center;
}
.cylxd-hero-flag {
    display: inline-block;
    background: linear-gradient(135deg, #667eea, #764ba2);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 1px;
    padding: 5px 16px;
    border-radius: 999px;
}

/* ── 本页标题行：正式启动挑战 + 项目类型三按键（同一行） ── */
/* 保留主题原有的蓝色横线，不新增、不清除 */
.cylxd-start-h2 {
    margin-bottom: 14px;
}
.cylxd-start-h2 > span {
    display: inline-block;
    white-space: nowrap;
    margin-right: 2em;
}
/* 按键浮在标题后面，彼此用 margin 保持距离 */
.cylxd-start-h2 .cylxd-type-btn {
    vertical-align: middle;
    margin-right: 1.5em;
}
.cylxd-start-h2 .cylxd-type-btn:last-child {
    margin-right: 0;
}
/* ── 认证标准入口（个人创效 / 团队创效按键右侧的链接）→ ?tab=cert_std ── */
.cylxd-start-h2 .cylxd-std-entry {
    display: inline-block;
    vertical-align: middle;
    font-size: 14px;
    font-weight: 700;
    color: #3a4bb5;
    background: #eef1fe;
    border: 1px solid #c9d2f7;
    border-radius: 10px;
    padding: 8px 18px;
    text-decoration: none;
    white-space: nowrap;
    transition: background .2s, transform .15s, box-shadow .2s;
}
.cylxd-start-h2 .cylxd-std-entry:hover {
    background: #e2e8ff;
    color: #2b3aa0;
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(102, 126, 234, .25);
}
.cylxd-type-btn {
    font-size: 15px;
    font-weight: 700;
    padding: 8px 22px;
    border-radius: 10px;
    border: none;
    cursor: pointer;
    transition: transform .15s, box-shadow .2s, filter .2s;
    white-space: nowrap;
}
.cylxd-type-btn.is-available {
    background: linear-gradient(135deg, #27ae60, #2ecc71);
    color: #fff;
    box-shadow: 0 3px 10px rgba(39,174,96,.25);
}
.cylxd-type-btn.is-available:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(39,174,96,.35);
}
.cylxd-type-btn.is-available.is-selected {
    box-shadow: 0 0 0 3px rgba(39,174,96,.25), 0 6px 16px rgba(39,174,96,.4);
    transform: translateY(-2px);
}
.cylxd-type-btn.is-active {
    background: linear-gradient(135deg, #b8c0cb, #d0d6df);
    color: #fff;
    opacity: .85;
    cursor: not-allowed;
}

/* ── 组员配置表（团队项目） ── */
.cylxd-team-config-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 4px;
}
.cylxd-team-config-table th,
.cylxd-team-config-table td {
    border: 1px solid #e8e8ef;
    padding: 6px 8px;
    text-align: left;
    font-size: 13px;
}
.cylxd-team-config-table th {
    background: #f6f7fb;
    color: #333;
    font-weight: 600;
}
.cylxd-team-config-table input,
.cylxd-team-config-table select {
    width: 100%;
    box-sizing: border-box;
    padding: 6px 10px;
    border: 1px solid #d0d5dd;
    border-radius: 6px;
    font-size: 13px;
}
.cylxd-team-config-table input:focus,
.cylxd-team-config-table select:focus {
    outline: none;
    border-color: #667eea;
    box-shadow: 0 0 0 3px rgba(102,126,234,.12);
}

/* ── 启动中项目：按类型分块 ── */
.cylxd-proj-group {
    margin-bottom: 28px;
}
.cylxd-proj-group-title {
    font-size: 17px;
    font-weight: 800;
    color: #1a1a2e;
    margin: 0 0 4px;
}
.cylxd-proj-group-sub {
    font-size: 12px;
    color: #999;
    margin-bottom: 12px;
}
.cylxd-proj-empty {
    background: #fff;
    border: 1px dashed #d5d9e2;
    border-radius: 10px;
    padding: 18px;
    text-align: center;
    color: #888;
    font-size: 14px;
}
.cylxd-proj-empty a {
    color: #667eea;
    font-weight: 600;
}

/* ── 挑战进行中卡片 ── */
.cylxd-active-card {
    padding: 18px;
    margin-bottom: 16px;
}
.cylxd-code-badge {
    display: inline-block;
    margin-left: 6px;
    background: rgba(102,126,234,.12);
    color: #667eea;
    font-family: Consolas, Monaco, monospace;
    font-size: 12px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 5px;
    vertical-align: middle;
}
.cylxd-start-share-box {
    margin-top: 16px;
    padding: 14px;
    border: 1px dashed #d5d9e2;
    background: #fbfbfe;
}
.cylxd-start-share-box h3 {
    font-size: 14px;
}
.cylxd-start-share-box .cylxd-start-share-status {
    font-size: 13px;
}
.cylxd-start-share-box .cylxd-share-file-label {
    display: inline-block;
    background: #667eea;
    color: #fff;
    padding: 8px 16px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 14px;
    margin-top: 8px;
}
.cylxd-start-share-box .cylxd-share-file-label:hover {
    background: #5568d8;
}

/* ── 提交表单 ── */
.cylxd-submit-section {
    background: #fff;
    border-radius: 12px;
    padding: 24px;
    margin-bottom: 24px;
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
.cylxd-submit-section h3 {
    margin-top: 0;
    color: #333;
}
.cylxd-submit-section label {
    display: block;
    margin-bottom: 16px;
    font-weight: 600;
    color: #333;
    font-size: 14px;
}
.cylxd-submit-section textarea,
.cylxd-submit-section input[type="number"] {
    width: 100%;
    margin-top: 6px;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 8px;
    font-size: 14px;
    resize: vertical;
    font-family: inherit;
}
.cylxd-submit-section textarea:focus,
.cylxd-submit-section input:focus {
    border-color: #667eea;
    outline: none;
    box-shadow: 0 0 0 3px rgba(102,126,234,.15);
}
.cylxd-submit-section input[type="file"] {
    display: block;
    margin-top: 6px;
    font-size: 13px;
}
.cylxd-submit-btn {
    margin-top: 8px;
    padding: 10px 24px !important;
    font-size: 15px !important;
}

/* ── 勋章墙 ── */
.cylxd-badge-section {
    background: #fff;
    border-radius: 12px;
    padding: 24px;
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
    margin-bottom: 24px;
}
.cylxd-badge-wall {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 16px;
    margin-top: 16px;
}
.cylxd-badge-item {
    text-align: center;
    padding: 20px 12px;
    border-radius: 12px;
    border: 2px solid #f0f0f0;
    transition: all .3s;
}
.cylxd-badge-item.earned {
    border-color: #667eea;
    background: linear-gradient(135deg, #f5f7ff, #fff);
    box-shadow: 0 4px 12px rgba(102,126,234,.15);
}
.cylxd-badge-item.pending {
    border-color: #ffc107;
    background: #fffde7;
}
.cylxd-badge-item.locked {
    opacity: .4;
    filter: grayscale(1);
}
.cylxd-badge-icon {
    font-size: 40px;
    margin-bottom: 8px;
}
.cylxd-badge-name {
    font-weight: 700;
    font-size: 14px;
    color: #333;
    margin-bottom: 4px;
}
.cylxd-badge-desc {
    font-size: 12px;
    color: #999;
    margin-bottom: 6px;
}
.cylxd-badge-status {
    font-size: 11px;
    font-weight: 600;
}
.cylxd-badge-item.earned  .cylxd-badge-status { color: #4caf50; }
.cylxd-badge-item.pending .cylxd-badge-status { color: #f9a825; }
.cylxd-badge-item.locked  .cylxd-badge-status { color: #bbb; }
/* 样式库勋章图（type=badge）+ 彩色卡片文字适配 */
.cylxd-badge-img {
    width: 56px;
    height: 56px;
    object-fit: cover;
    border-radius: 50%;
    margin-bottom: 8px;
    background: #fff;
    border: 2px solid #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,.12);
}
.cylxd-badge-item.style-earned .cylxd-badge-name,
.cylxd-badge-item.style-earned .cylxd-badge-desc { color: #fff; }
.cylxd-badge-item.style-earned .cylxd-badge-status { color: rgba(255,255,255,.92); }
.cylxd-badge-item.style-earned .cylxd-badge-img { border-color: rgba(255,255,255,.65); }
/* 认证证书墙（type=cert） */
.cylxd-cert-wall {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 20px;
    margin-top: 10px;
}

/* ── 勋章弹窗 ── */
#cylxd-badge-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none; /* JS 会设置为 flex */
}

#cylxd-badge-modal .cylxd-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}

#cylxd-badge-modal .cylxd-modal-content {
    position: relative;
    z-index: 2;
    background: #fff;
    border-radius: 20px;
    padding: 40px;
    text-align: center;
    max-width: 400px;
    width: 90%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0,0,0,0.25);
    animation: cylxdPopIn 0.4s cubic-bezier(.18,.89,.32,1.28);
}

.cylxd-modal-shine {
    position: absolute;
    top: -50%; left: -50%;
    width: 200%; height: 200%;
    background: conic-gradient(from 0deg, transparent, rgba(255,215,0,.3), transparent, rgba(102,126,234,.3), transparent);
    animation: cylxdShine 3s linear infinite;
    pointer-events: none;
}
.cylxd-modal-icon {
    font-size: 64px;
    margin-bottom: 16px;
    animation: cylxdBounce 1s ease infinite;
}
#cylxd-badge-modal .cylxd-modal-content h2 {
    color: #333;
    margin: 0 0 12px;
    font-size: 22px;
}
#cylxd-badge-modal .cylxd-modal-content p {
    color: #666;
    margin: 0 0 16px;
    line-height: 1.6;
}
.cylxd-modal-name {
    font-size: 14px;
    color: #667eea;
    font-weight: 600;
    margin: 8px 0 16px;
}
.cylxd-modal-actions {
    display: flex;
    gap: 10px;
    justify-content: center;
}

/* ── 周报弹窗 ── */
#cylxd-week-modal {
    position: fixed;
    inset: 0;
    z-index: 9997;
    display: none;
}

#cylxd-week-modal .cylxd-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}

#cylxd-week-modal .cylxd-modal-content {
    position: relative;
    z-index: 2;
    background: #fff;
    border-radius: 12px;
    padding: 28px 32px;
    max-width: 600px;
    width: 90%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0,0,0,0.25);
}

/* ── 画像弹窗 ── */
#cylxd-portrait-modal {
    position: fixed;
    inset: 0;
    z-index: 9996;
    display: none;
}

#cylxd-portrait-modal .cylxd-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}

#cylxd-portrait-modal .cylxd-modal-content {
    position: relative;
    z-index: 2;
    background: #fff;
    border-radius: 12px;
    padding: 28px 32px;
    max-width: 500px;
    width: 90%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0,0,0,0.25);
}

/* ── 导师点评（前台）── */
.cylxd-my-reviews {
    background: #f0f7ff;
    border-radius: 12px;
    padding: 20px 24px;
    margin-top: 24px;
    border-left: 4px solid #667eea;
}
.cylxd-my-reviews h3 { margin-top: 0; color: #333; }
.cylxd-review-item {
    background: #fff;
    padding: 12px 16px;
    border-radius: 8px;
    margin-bottom: 10px;
    box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.cylxd-review-item p { margin: 6px 0; font-size: 13px; line-height: 1.6; }

/* ── 学员类别标签 ── */
.cylxd-type-tag {
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 600;
    background: rgba(255,255,255,.25);
}
.cylxd-case-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
    background: #e8f5e9;
    color: #2e7d32;
}
.cylxd-ch-name-link {
    color: #667eea;
    text-decoration: none;
    cursor: pointer;
    border-bottom: 1px dashed #667eea;
    transition: color .15s;
}
.cylxd-ch-name-link:hover { color: #764ba2; border-bottom-color: #764ba2; }

/* ── 动画 ── */
@keyframes cylxdFadeIn {
    from { opacity: 0; transform: translateY(-20px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes cylxdPopIn {
    from { transform: scale(.7); opacity: 0; }
    to   { transform: scale(1);  opacity: 1; }
}
@keyframes cylxdBounce {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-10px); }
}
@keyframes cylxdShine {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* ===== 左右布局 Shell ===== */
.cylxd-user-center-shell {
    width: 100%;
    min-height: 100vh;
    background: #f7f8fa;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.cylxd-topbar {
    background: linear-gradient(135deg, #667eea, #764ba2);
    color: #fff;
    padding: 14px 24px;
    display: flex;
    gap: 20px;
    align-items: center;
    font-size: 14px;
}
.cylxd-topbar button {
    margin-left: auto;
    background: rgba(255,255,255,0.2);
    color: #fff;
    border: 1px solid rgba(255,255,255,0.4);
}

.cylxd-body {
    display: flex;
    min-height: 75vh;
}

.cylxd-sidebar {
    width: 200px;
    background: #fff;
    border-right: 1px solid #eee;
    padding: 16px 0;
}
.cylxd-sidebar ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.cylxd-sidebar li {
    position: relative;
}
.cylxd-sidebar a {
    display: flex;
    align-items: center;
    padding: 11px 16px;
    color: #555;
    text-decoration: none;
    font-size: 14px;
    transition: all 0.2s;
    border-left: 3px solid transparent;
    gap: 6px;
}
.cylxd-sidebar a:hover {
    background: #f0f4ff;
    color: #667eea;
}
.cylxd-sidebar li.active > a,
.cylxd-sidebar li.active > .cylxd-dd-toggle {
    background: #f0f4ff;
    border-left-color: #667eea;
    color: #667eea;
    font-weight: 600;
}
/* 消息中心未读角标 */
.cylxd-inbox-badge {
    display: inline-block;
    min-width: 18px;
    height: 18px;
    line-height: 18px;
    padding: 0 5px;
    margin-left: 6px;
    border-radius: 9px;
    background: #ef4444;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    vertical-align: 1px;
}
/* 下拉箭头 */
.cylxd-dd-arrow {
    margin-left: auto;
    font-size: 11px;
    color: #bbb;
    transition: transform 0.2s;
}
.cylxd-dd.open .cylxd-dd-arrow,
.cylxd-dd.active .cylxd-dd-arrow {
    color: #667eea;
    transform: rotate(180deg);
}
/* 下拉子菜单 */
.cylxd-dd-menu {
    display: none;
    list-style: none;
    padding: 0;
    margin: 0;
    background: #fafbfc;
    border-top: 1px solid #eee;
}
.cylxd-dd.open > .cylxd-dd-menu {
    display: block;
}
.cylxd-dd-menu li a {
    padding: 9px 16px 9px 32px;
    font-size: 13px;
    border-left: 3px solid transparent;
}
.cylxd-dd-menu li:hover > a {
    background: #f0f4ff;
    border-left-color: #667eea;
}
.cylxd-dd-menu li.active > a {
    background: #eef2ff;
    color: #667eea;
    border-left-color: #667eea;
}
.cylxd-dd-menu .cylxd-dd-label {
    padding: 6px 16px 4px;
    font-size: 11px;
    color: #999;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-weight: 600;
    border-bottom: 1px solid #eee;
}
.cylxd-dd-menu .cylxd-dd-pager {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 6px 8px;
    border-top: 1px solid #eee;
}
.cylxd-dd-menu .cylxd-dd-pager a {
    padding: 2px 8px;
    font-size: 12px;
    color: #666;
    border: 1px solid #ddd;
    border-radius: 3px;
    text-decoration: none;
    border-left: none;
}
.cylxd-dd-menu .cylxd-dd-pager a.active {
    background: #667eea;
    color: #fff;
    border-color: #667eea;
}

.cylxd-main {
    flex: 1;
    padding: 20px 24px;
    background: #f7f8fa;
    overflow-y: auto;
}

/* 主页卡片 */
.cylxd-home-actions {
    margin: 16px 0;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

/* 周报块 */
.cylxd-week-block {
    padding: 10px 14px;
    border: 1px solid #eee;
    border-radius: 6px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 12px;
}

/* 点评块 */
.cylxd-review-block {
    background: #f9f9ff;
    border-left: 4px solid #667eea;
    padding: 12px 16px;
    margin: 10px 0;
    border-radius: 4px;
}

/* ============================================================
 * 挑战表格（全宽，一行一个挑战）
 * ============================================================ */
.cylxd-ch-table-wrap {
    width: 100%;
    overflow-x: auto;
}
.cylxd-ch-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
    background: #fff;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 6px rgba(0,0,0,.06);
}
.cylxd-ch-table thead th {
    background: linear-gradient(135deg, #667eea, #764ba2);
    color: #fff;
    padding: 12px 10px;
    text-align: left;
    font-weight: 600;
    white-space: nowrap;
    font-size: 13px;
}
.cylxd-ch-table tbody tr.cylxd-ch-row {
    cursor: pointer;
    transition: background .15s;
}
.cylxd-ch-table tbody tr.cylxd-ch-row:hover {
    background: #f0f4ff;
}
.cylxd-ch-table tbody tr.cylxd-ch-row td {
    padding: 11px 10px;
    border-bottom: 1px solid #f0f0f0;
    vertical-align: middle;
}
.cylxd-ch-table tbody tr.cylxd-ch-detail td {
    padding: 0;
    background: #fafbfc;
    border-bottom: 1px solid #e8e8e8;
}
.cylxd-ch-status { font-size: 13px; }
.cylxd-ch-done   { color: #27ae60; }
.cylxd-ch-active { color: #667eea; }
.cylxd-ch-fail   { color: #e74c3c; }
.cylxd-ch-lv {
    display: inline-block;
    font-size: 12px;
    padding: 2px 8px;
    border-radius: 10px;
    margin-top: 2px;
}
.cylxd-ch-lv-cert   { background: #d4edda; color: #155724; }
.cylxd-ch-lv-pending { background: #fff3cd; color: #856404; }
.cylxd-ch-lv-empty  { background: #f0f0f0; color: #999; }

/* 勋章 */
.cylxd-badge-count {
    display: inline-block;
    background: #fff3cd;
    color: #856404;
    border: 1px solid #ffc107;
    border-radius: 12px;
    padding: 2px 8px;
    font-size: 12px;
    cursor: pointer;
}
.cylxd-badge-count:hover { background: #ffeaa7; }
.cylxd-badge-list {
    margin-top: 4px;
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}
.cylxd-badge-tag {
    background: #667eea;
    color: #fff;
    border-radius: 10px;
    padding: 2px 8px;
    font-size: 11px;
}

/* 能力提升 */
.cylxd-ability-rate {
    color: #27ae60;
    font-weight: 700;
    font-size: 12px;
    margin-left: 4px;
}

/* 展开详情 */
.cylxd-detail-section {
    padding: 12px 16px;
    border-bottom: 1px solid #eee;
}
.cylxd-detail-section:last-child { border-bottom: none; }
.cylxd-detail-section strong {
    display: block;
    font-size: 13px;
    color: #667eea;
    margin-bottom: 6px;
}
.cylxd-week-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 4px 0;
    font-size: 13px;
}
.cylxd-week-label { color: #555; font-weight: 600; }
.cylxd-week-review { color: #27ae60; font-size: 12px; }
.cylxd-week-pending { color: #e67e22; font-size: 12px; }
.cylxd-detail-content {
    font-size: 13px;
    color: #444;
    line-height: 1.6;
    padding: 4px 0 4px 12px;
}
.cylxd-qa-item {
    padding: 6px 0 6px 12px;
    border-left: 3px solid #667eea;
    margin: 4px 0;
    font-size: 13px;
}
.cylxd-qa-q { color: #333; margin: 2px 0; }
.cylxd-qa-a { color: #667eea; margin: 2px 0; }

/* 申请陪跑表单 */
#cylxd-apply-form label {
    display: block;
    margin-bottom: 16px;
    font-weight: 600;
    color: #333;
}
#cylxd-apply-form select,
#cylxd-apply-form textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 8px;
    margin-top: 6px;
    font-size: 14px;
    font-family: inherit;
}
#cylxd-apply-form select:focus,
#cylxd-apply-form textarea:focus {
    border-color: #667eea;
    outline: none;
    box-shadow: 0 0 0 3px rgba(102,126,234,.15);
}

/* 测评表格 */
.cylxd-quiz-table {
    width: 100%;
    border-collapse: collapse;
    margin: 16px 0;
    font-size: 14px;
}
.cylxd-quiz-table th {
    background: #f0f4ff;
    padding: 10px 8px;
    text-align: center;
    border-bottom: 2px solid #667eea;
}
.cylxd-quiz-table td {
    padding: 10px 8px;
    border-bottom: 1px solid #f0f0f0;
    vertical-align: top;
}
.cylxd-quiz-table td.core-label {
    font-weight: 600;
    white-space: nowrap;
    width: 100px;
}
.cylxd-quiz-table td.core-1 { color: #e74c3c; }
.cylxd-quiz-table td.core-2 { color: #f39c12; }
.cylxd-quiz-table td.core-3 { color: #27ae60; }
.cylxd-quiz-table td.q-text {
    min-width: 300px;
    line-height: 1.5;
}
.cylxd-quiz-table input[type="radio"] {
    margin: 0 4px;
}

/* 后台工作台 */
.cylxd-workbench .cylxd-filter-bar {
    background: #fff;
    padding: 16px;
    border-radius: 8px;
    margin-bottom: 16px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
    box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.cylxd-workbench .cylxd-filter-bar input,
.cylxd-workbench .cylxd-filter-bar select {
    padding: 6px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
}
.cylxd-student-card {
    background: #fff;
    border: 1px solid #eee;
    border-radius: 10px;
    margin-bottom: 12px;
    overflow: hidden;
    box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.cylxd-card-header {
    padding: 12px 16px;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    cursor: pointer;
    background: #fafbfc;
    border-bottom: 1px solid transparent;
    transition: all .2s;
}
.cylxd-card-header:hover {
    background: #f0f4ff;
}
.cylxd-card-header .cylxd-toggle-btn {
    margin-left: auto;
    padding: 4px 10px;
    font-size: 12px;
}
.cylxd-card-apply {
    padding: 10px 16px;
    background: #fff8e1;
    border-top: 1px solid #ffe082;
    border-bottom: 1px solid #ffe082;
    font-size: 13px;
}
.cylxd-card-body {
    padding: 12px 16px;
}
.cylxd-card-footer {
    padding: 10px 16px;
    background: #f0f7ff;
    border-top: 1px solid #d6e4ff;
}
.cylxd-review-status.done { color: #27ae60; font-weight: 600; }
.cylxd-review-status.pending { color: #f39c12; font-weight: 600; }
.cylxd-cert-status { font-size: 12px; }
.cylxd-pending-badge { color: #f9a825; font-weight: 600; }
.cylxd-approved-badge { color: #27ae60; font-weight: 600; }
.cylxd-apply-badge { color: #f9a825; font-weight: 600; }

/* 周报详情 */
.cylxd-week-detail {
    margin-bottom: 8px;
    border: 1px solid #f0f0f0;
    border-radius: 6px;
}
.cylxd-week-detail summary {
    padding: 8px 12px;
    cursor: pointer;
    font-weight: 600;
    background: #fafbfc;
    border-radius: 6px 6px 0 0;
}
.cylxd-week-content {
    padding: 12px;
}
.cylxd-week-content p {
    margin: 6px 0;
    font-size: 13px;
    line-height: 1.6;
}
.cylxd-existing-review {
    background: #f0f7ff;
    padding: 10px 12px;
    border-radius: 6px;
    margin-bottom: 10px;
}
.cylxd-review-section {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed #ddd;
}
.cylxd-review-input {
    width: 100%;
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 6px;
    margin-bottom: 8px;
    font-size: 13px;
    font-family: inherit;
}
.cylxd-review-input:focus {
    border-color: #667eea;
    outline: none;
    box-shadow: 0 0 0 2px rgba(102,126,234,.15);
}
.cylxd-review-actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* 后台表单 */
.form-table th {
    width: 120px;
    text-align: left;
    padding: 8px 10px 8px 0;
    font-weight: 600;
    color: #333;
}
.form-table td {
    padding: 8px 0;
}
.form-table input[type="text"],
.form-table input[type="date"],
.form-table select {
    padding: 6px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
}
.regular-text {
    width: 300px;
    max-width: 100%;
}

/* 仪式弹窗遮罩层 */
.cylxd-modal-overlay {
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.6);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
/* 仪式弹窗主体 */
.cylxd-ceremony-box {
background: #fafbfc;
border-radius: 12px;
width: 90%;
max-width: 600px;
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
overflow: hidden;
animation: scaleIn 0.3s ease-out;
}
@keyframes scaleIn {
from { transform: scale(0.8); opacity: 0; }
to { transform: scale(1); opacity: 1; }
}
.cylxd-ceremony-header {
background: #667eea;
color: #fff;
padding: 15px 20px;
text-align: center;
}
.cylxd-ceremony-header h3 {
margin: 0;
font-size: 20px;
}
.cylxd-ceremony-body {
padding: 30px 20px;
background: #fff;
}
.cylxd-share-tip {
text-align: center;
color: #666;
font-size: 14px;
margin-top: 20px;
}
.cylxd-ceremony-footer {
padding: 15px 20px;
display: flex;
justify-content: space-between;
gap: 10px;
flex-wrap: wrap;
}

/* 按钮基础样式 */
.cylxd-btn {
flex: 1;
min-width: 100px;
padding: 10px 0;
border: none;
border-radius: 6px;
cursor: pointer;
font-size: 14px;
transition: all 0.2s;
}
.cylxd-btn:hover { opacity: 0.8; }
/* 分享按钮配色 */
.share-wechat { background: #07c160; color: #fff; }
.share-weibo { background: #e6162d; color: #fff; }
.share-pyq { background: #576b95; color: #fff; }
/* 主按钮 */
.btn-primary {
background: #667eea;
color: #fff;
font-weight: bold;
}


/* ========== 启动仪式弹窗 ========== */
#cylxd-launch-modal .cylxd-modal-overlay {
    will-change: opacity;
}
#cylxd-launch-modal .cylxd-launch-card {
    will-change: transform;
}
@media (max-width: 480px) {
    #cylxd-launch-modal .cylxd-launch-card {
        padding: 24px 16px !important;
    }
}

/* ========== 历史周报：按项目手风琴 ========== */
.cylxd-project-accordion {
    border: 1px solid #e5e5e5;
    border-radius: 8px;
    margin-bottom: 12px;
    overflow: hidden;
}
.cylxd-project-head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: #f7f8ff;
    cursor: pointer;
    transition: background .2s;
}
.cylxd-project-head:hover {
    background: #eef1ff;
}
.cylxd-project-head .cylxd-project-name {
    font-weight: 700;
    color: #333;
    flex: 1;
}
.cylxd-project-head .cylxd-project-count {
    color: #667eea;
    font-size: 13px;
    background: #eef1ff;
    padding: 2px 10px;
    border-radius: 20px;
}
.cylxd-project-head .cylxd-arrow {
    color: #999;
    transition: transform .2s;
}
.cylxd-project-body {
    padding: 10px 12px;
    border-top: 1px solid #f0f0f0;
}
.cylxd-project-body .cylxd-week-block {
    margin-bottom: 6px;
}

/* ========== 导师点评：学员当周提交对照 ========== */
.cylxd-review-student {
    margin: 10px 0;
    border: 1px solid #e8e8f5;
    border-radius: 8px;
    background: #fafaff;
}
.cylxd-review-student summary {
    padding: 8px 12px;
    cursor: pointer;
    font-weight: 600;
    color: #4a4acf;
    font-size: 13px;
}
.cylxd-review-week-fields {
    padding: 10px 14px;
    border-top: 1px dashed #ddd;
    max-height: 300px;
    overflow-y: auto;
}
.cylxd-review-week-fields p {
    margin: 6px 0;
    font-size: 13px;
    line-height: 1.6;
}
.cylxd-review-mentor {
    background: #f0f7ff;
    border-left: 4px solid #667eea;
    padding: 10px 14px;
    border-radius: 6px;
    margin-top: 8px;
}
.cylxd-review-item {
    background: #fff;
    border: 1px solid #eee;
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 12px;
}

/* ========== 认证申请表单 ========== */
.cylxd-cert-form-wrap {
    background: #fff;
    border: 1px solid #eee;
    border-radius: 10px;
    padding: 18px 20px;
    margin-top: 10px;
    box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.cylxd-cert-form-wrap label {
    display: block;
    margin-bottom: 14px;
    font-weight: 600;
    color: #333;
}
.cylxd-cert-form-wrap input[type="text"],
.cylxd-cert-form-wrap textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 8px;
    margin-top: 6px;
    font-size: 14px;
    font-family: inherit;
}
.cylxd-cert-form-wrap input[type="text"]:focus,
.cylxd-cert-form-wrap textarea:focus {
    border-color: #667eea;
    outline: none;
    box-shadow: 0 0 0 3px rgba(102,126,234,.15);
}
.cylxd-cert-form-wrap input[type="file"] {
    margin-top: 6px;
}
.cylxd-cert-status {
    background: #f6fff6;
    border: 1px solid #b8e6b8;
    border-radius: 10px;
    padding: 16px 20px;
    margin-top: 10px;
}
.cylxd-cert-status h3 {
    margin-top: 0;
    color: #2d6a2d;
}

/* ========== 精选问答确认（前台导师点评 Tab）========== */
.cylxd-qa-confirm {
    background: #fffbe6;
    border: 1px solid #f0c36d;
    border-radius: 10px;
    padding: 12px 16px;
    margin-top: 12px;
}
.cylxd-qa-confirm h4 { margin: 0 0 8px; color: #8a6d00; }
.cylxd-qa-confirm p { margin: 6px 0; font-size: 13px; line-height: 1.6; }
.cylxd-qa-confirm .button { margin-top: 6px; }

/* ========== 专家坐诊（精选问答栏目）========== */
.cylxd-expert-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 16px;
    margin-top: 16px;
}
.cylxd-expert-card {
    background: #fff;
    border: 1px solid #eee;
    border-top: 4px solid #667eea;
    border-radius: 10px;
    padding: 16px 18px;
    box-shadow: 0 2px 8px rgba(0,0,0,.05);
    transition: transform .2s;
}
.cylxd-expert-card:hover { transform: translateY(-2px); }
.cylxd-expert-card.mine { border-top-color: #27ae60; }
.cylxd-expert-head { display: flex; align-items: flex-start; gap: 8px; }
.cylxd-expert-q { font-weight: 700; color: #333; font-size: 15px; flex: 1; line-height: 1.5; }
.cylxd-expert-mine { background: #27ae60; color: #fff; font-size: 11px; padding: 2px 8px; border-radius: 12px; white-space: nowrap; }
.cylxd-expert-origin { color: #999; font-size: 12px; margin: 8px 0 0; }
.cylxd-expert-answer { color: #555; font-size: 13px; line-height: 1.7; margin: 10px 0; background: #f7f8ff; padding: 10px 12px; border-radius: 8px; }
.cylxd-expert-meta { color: #999; font-size: 12px; margin: 8px 0 0; }
.cylxd-empty { background: #fafbfc; border: 1px dashed #ddd; border-radius: 10px; padding: 30px; text-align: center; color: #999; }

/* ========== 申请陪跑：三条辅导路径 ========== */
.cylxd-mentor-path {
    background: #fff;
    border: 1px solid #eee;
    border-radius: 10px;
    padding: 16px 18px;
    margin-bottom: 14px;
    max-width: 720px;
    box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.cylxd-mentor-path h4 { margin: 0 0 12px; color: #333; }

/* ── 主动申请导师陪跑：搜索导师 / 选择 / 申请 ── */
.cylxd-mentor-path .ma-search {
    height: 34px;
    padding: 4px 10px;
    border: 1px solid #d5dbe7;
    border-radius: 6px;
    font-size: 13px;
}
.cylxd-mentor-path .ma-search:focus { border-color: #667eea; outline: none; }
.ma-option:hover { border-color: #a5b4fc; background: #f8f9ff; }
.ma-option .cylxd-code-badge { color: #fff; margin-left: 6px; }
.ma-results { max-height: 260px; overflow: auto; }
.cylxd-mentor-path select.ma-kind,
.cylxd-mentor-path select.ma-challenge {
    height: 34px;
    padding: 4px 6px;
    border: 1px solid #d5dbe7;
    border-radius: 6px;
    font-size: 13px;
    background: #fff;
}
.cylxd-mentor-path .ma-message {
    border: 1px solid #d5dbe7;
    border-radius: 6px;
    padding: 8px 10px;
    font-size: 13px;
    resize: vertical;
}
.cylxd-mentor-path .ma-message:focus { border-color: #667eea; outline: none; }

.cylxd-paid-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
}
.cylxd-paid-card {
    border: 1px solid #eee;
    border-radius: 10px;
    padding: 14px 16px;
    background: #fafbfc;
}
.cylxd-paid-card h5 { margin: 0 0 6px; color: #333; }
.cylxd-paid-card p { margin: 0 0 8px; font-size: 13px; color: #666; line-height: 1.6; }
.cylxd-paid-price { font-weight: 700; color: #e67e22; font-size: 18px !important; }

/* ========== 注册会员面板（未登录时显示）========== */
.cylxd-auth-panel {
    max-width: 480px;
    margin: 40px auto;
}
.cylxd-auth-card {
    background: #fff;
    border: 1px solid #e8e8f0;
    border-radius: 16px;
    padding: 32px 28px;
    box-shadow: 0 4px 20px rgba(102,126,234,.1);
}
.cylxd-auth-card h3 {
    margin: 0 0 8px;
    font-size: 22px;
    color: #1a1a2e;
    text-align: center;
}
.cylxd-auth-hint {
    margin: 0 0 24px;
    font-size: 14px;
    color: #888;
    text-align: center;
    line-height: 1.6;
}
.cylxd-reg-form .cylxd-form-row {
    margin-bottom: 16px;
}
.cylxd-input {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #ddd;
    border-radius: 8px;
    font-size: 15px;
    font-family: inherit;
    transition: border-color .2s, box-shadow .2s;
    box-sizing: border-box;
}
.cylxd-input:focus {
    border-color: #667eea;
    outline: none;
    box-shadow: 0 0 0 3px rgba(102,126,234,.12);
}
.cylxd-btn-primary {
    width: 100%;
    padding: 14px;
    background: linear-gradient(135deg, #667eea, #764ba2);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: opacity .2s;
}
.cylxd-btn-primary:hover { opacity: .9; }
.cylxd-btn-primary:disabled { opacity: .6; cursor: not-allowed; }
.cylxd-auth-login {
    text-align: center;
    margin-top: 18px;
    font-size: 14px;
    color: #888;
}
.cylxd-auth-login a { color: #667eea; font-weight: 600; }
.cylxd-notice-success {
    background: #f0fff4;
    border: 1px solid #9ae6b4;
    color: #276749;
    padding: 12px;
    border-radius: 8px;
    text-align: center;
    font-size: 14px;
}
.cylxd-notice-error {
    background: #fff5f5;
    border: 1px solid #feb2b2;
    color: #c53030;
    padding: 12px;
    border-radius: 8px;
    text-align: center;
    font-size: 14px;
}

/* ========== 挑战表格列表 ========== */
.cylxd-ch-table-wrap { overflow-x: auto; margin: 16px 0; }
.cylxd-ch-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.cylxd-ch-table th { background: #667eea; color: #fff; padding: 12px 10px; text-align: left; white-space: nowrap; font-weight: 600; }
.cylxd-ch-table td { padding: 10px; border-bottom: 1px solid #e8e8f0; vertical-align: top; }
.cylxd-ch-table tr.cylxd-ch-row { cursor: pointer; transition: background .15s; }
.cylxd-ch-table tr.cylxd-ch-row:hover { background: #f0f4ff; }
.cylxd-ch-table tr.cylxd-ch-detail td { background: #fafbff; border-bottom: 2px solid #e8e8f0; }
.cylxd-detail-section { margin-bottom: 14px; }
.cylxd-detail-section strong { display: block; margin-bottom: 6px; color: #333; font-size: 13px; }
.cylxd-week-item { display: flex; justify-content: space-between; padding: 4px 0; font-size: 13px; }
.cylxd-qa-item { margin-top: 8px; padding: 8px 12px; background: #f8f9ff; border-radius: 6px; font-size: 13px; }
.cylxd-qa-q, .cylxd-qa-a { margin: 4px 0; line-height: 1.5; }

/* ========== 忘记密码链接 ========== */
.cylxd-forgot-link {
    text-align: center;
    margin-top: 14px;
    font-size: 14px;
}
.cylxd-forgot-link a {
    color: #667eea;
    font-weight: 600;
    text-decoration: none;
}
.cylxd-forgot-link a:hover {
    text-decoration: underline;
}

/* ========== 项目切换条：一行 5 个 + 右箭头翻页 ========== */
.cylxd-project-switcher {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 4px 0 16px;
    max-width: 100%;
}
.cylxd-switcher-label {
    flex: 0 0 auto;
    font-size: 13px;
    color: #666;
    white-space: nowrap;
}
.cylxd-switcher-window {
    flex: 1 1 auto;
    overflow: hidden;
    min-width: 0;
}
.cylxd-switcher-track {
    display: flex;
    transition: transform .3s ease;
    will-change: transform;
}
.cylxd-switcher-item {
    flex: 0 0 calc(20% - 8px);
    max-width: calc(20% - 8px);
    box-sizing: border-box;
    margin: 0 4px;
    padding: 7px 6px;
    border: 1px solid #ddd;
    border-radius: 6px;
    background: #fff;
    color: #333;
    text-decoration: none;
    font-size: 12px;
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    transition: border-color .15s, background .15s, color .15s;
}
.cylxd-switcher-item .cylxd-switcher-top {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 100%;
}
.cylxd-switcher-item .cylxd-switcher-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cylxd-switcher-item .cylxd-switcher-week {
    flex: 0 0 auto;
    font-size: 10px;
    line-height: 1;
    padding: 3px 5px;
    border-radius: 8px;
    background: #eef1fb;
    color: #667eea;
    white-space: nowrap;
}
.cylxd-switcher-item .cylxd-switcher-code {
    flex: 0 0 auto;
    width: 100%;
    font-size: 9px;
    line-height: 1.2;
    font-family: Consolas, Monaco, monospace;
    color: #888;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    letter-spacing: -0.2px;
}
.cylxd-switcher-item.active .cylxd-switcher-code {
    color: rgba(255, 255, 255, .75);
}
.cylxd-switcher-item:hover {
    border-color: #667eea;
    color: #667eea;
}
.cylxd-switcher-item:hover .cylxd-switcher-week {
    background: #e3e8fb;
}
.cylxd-switcher-item.active {
    border-color: #667eea;
    background: #667eea;
    color: #fff;
}
.cylxd-switcher-item.active .cylxd-switcher-week {
    background: rgba(255, 255, 255, .22);
    color: #fff;
}
.cylxd-switcher-next {
    flex: 0 0 auto;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 1px solid #ddd;
    border-radius: 50%;
    background: #fff;
    color: #667eea;
    font-size: 14px;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .15s, color .15s, border-color .15s, opacity .15s;
}
.cylxd-switcher-next:hover {
    background: #667eea;
    color: #fff;
    border-color: #667eea;
}

/* ============================================================
 * 移动端适配（手机 / 小平板，≤ 768px）
 * 核心诉求：登录后左侧固定 200px 菜单在手机上挤占过多横向空间，
 * 改为「顶部横向滑动菜单条」，右侧内容区因此占满整行宽度。
 * 纯 CSS，不改动 JS 与 HTML 结构，下拉子菜单以全宽浮层呈现。
 * ============================================================ */
@media (max-width: 768px) {
    /* 顶部栏允许换行，避免一行挤爆 */
    .cylxd-topbar {
        flex-wrap: wrap;
        gap: 6px 12px;
        padding: 10px 14px;
        font-size: 13px;
    }
    .cylxd-topbar button {
        margin-left: 0;
    }

    /* 解除外壳裁剪，避免下拉浮层 / 弹窗在手机上被裁掉 */
    .cylxd-user-center-shell {
        overflow: visible;
    }

    /* 主体由横向改为纵向：菜单在上，内容在下 */
    .cylxd-body {
        flex-direction: column;
        min-height: auto;
    }

    /* 左侧菜单：横向滑动条（占满宽度，不再固定 200px） */
    .cylxd-sidebar {
        width: 100%;
        border-right: none;
        border-bottom: 1px solid #e5e7eb;
        padding: 0;
        position: relative; /* 作为下拉浮层的定位锚点 */
    }
    .cylxd-sidebar > ul {
        display: flex;
        flex-wrap: nowrap;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        gap: 2px;
        padding: 4px 8px;
    }
    .cylxd-sidebar li {
        position: static; /* 取消相对定位，使下拉浮层锚定到整条菜单 */
        white-space: nowrap;
    }
    .cylxd-sidebar a,
    .cylxd-sidebar .cylxd-dd-toggle {
        border-left: none;
        border-bottom: 3px solid transparent;
        border-radius: 8px 8px 0 0;
        padding: 12px 14px;
        font-size: 14px;
    }
    .cylxd-sidebar li.active > a,
    .cylxd-sidebar li.active > .cylxd-dd-toggle {
        border-left: none;
        border-bottom-color: #667eea;
    }

    /* 下拉子菜单：在手机上以全宽浮层出现在横滑条正下方 */
    .cylxd-dd-menu {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        background: #fff;
        border: 1px solid #eee;
        border-top: none;
        box-shadow: 0 8px 16px rgba(0, 0, 0, .10);
        z-index: 60;
        flex-direction: column;
    }
    .cylxd-dd.open > .cylxd-dd-menu {
        display: flex;
        flex-direction: column;
    }
    .cylxd-dd-menu li a {
        padding: 11px 16px;
    }

    /* 内容区：占满整行，取消内部纵向滚动改为随页面滚动 */
    .cylxd-main {
        overflow-y: visible;
        padding: 14px 14px 28px;
    }
}

/* 超小屏（≤ 480px）微调 */
@media (max-width: 480px) {
    .cylxd-sidebar a,
    .cylxd-sidebar .cylxd-dd-toggle {
        padding: 11px 12px;
        font-size: 13px;
    }
    .cylxd-main {
        padding: 12px 12px 24px;
    }
    .cylxd-topbar {
        padding: 8px 12px;
    }
}
.cylxd-switcher-next.disabled {
    opacity: .35;
    cursor: not-allowed;
}
.cylxd-switcher-next.disabled:hover {
    background: #fff;
    color: #667eea;
    border-color: #ddd;
}

/* ========== 周报点评：近三周编辑表单 ========== */
.cylxd-week-edit textarea {
    font-family: inherit;
}
.cylxd-week-edit .button.cylxd-week-edit-save {
    background: #f5a623;
    border-color: #f5a623;
    color: #fff;
}
.cylxd-week-edit .button.cylxd-week-edit-save:hover {
    background: #e0960d;
    border-color: #e0960d;
}
.cylxd-week-edit .button.cylxd-week-edit-save:disabled {
    opacity: .6;
    cursor: not-allowed;
}
.cylxd-week-edit-toggle {
    transition: background .15s, color .15s;
}
.cylxd-week-edit-toggle:hover {
    background: #f5a623;
    color: #fff;
}

/* ========== 个人图像（修改资料弹窗）========== */
.cylxd-avatar-option {
    display: inline-flex;
    padding: 3px;
    border: 2px solid transparent;
    border-radius: 50%;
    cursor: pointer;
    line-height: 0;
    transition: border-color .15s, box-shadow .15s, transform .15s;
}
.cylxd-avatar-option img {
    border-radius: 50%;
    width: 44px;
    height: 44px;
    object-fit: cover;
}
.cylxd-avatar-option:hover {
    transform: scale(1.08);
    border-color: #a5b4fc;
}
.cylxd-avatar-option.selected {
    border-color: #667eea;
    box-shadow: 0 0 0 2px rgba(102, 126, 234, .25);
}
.cylxd-topbar .cylxd-avatar-img {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, .55);
}