/* PDSA 自定义补充样式 - 基于 Tailwind v3
   v2 设计系统(对齐离线版 PDSA 投资咨询管理平台)
   主色:深海军蓝 + 古铜金;底色:暖米白 */
:root {
    --color-primary-50:  #FAF6E9;
    --color-primary-100: #F4EAD0;
    --color-primary-200: #E8D399;
    --color-primary-400: #C9A961;
    --color-primary-500: #A9854F;
    --color-primary-600: #8F6B1E;
    --color-primary-700: #6B5020;
    --color-accent-50:   #E6EAF0;
    --color-accent-400:  #1C3355;
    --color-accent-500:  #14243D;
    --color-accent-600:  #101E33;
    --color-ink-900:     #1D2433;
    --color-ink-700:     #4A4639;
    --color-ink-500:     #8B877C;
    --color-ink-300:     #DAD6CA;
    --color-ink-200:     #E9E7E0;
    --color-ink-100:     #F3F2ED;
    --color-ink-50:      #F5F4F0;
}

/* 全局 */
html, body {
    font-family: 'Noto Sans SC', -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;
    color: var(--color-ink-900);
    background: var(--color-ink-50);
    -webkit-font-smoothing: antialiased;
}

/* 滚动条 */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: var(--color-ink-100); }
::-webkit-scrollbar-thumb { background: var(--color-ink-300); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--color-primary-500); }

/* 卡片 */
.pdsa-card {
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset, 0 1px 3px rgba(20,27,41,0.04);
    border: 1px solid var(--color-ink-200);
    transition: box-shadow .25s, transform .25s;
}
.pdsa-card:hover { box-shadow: 0 4px 12px rgba(20,27,41,0.08); }
.pdsa-card-header {
    padding: 16px 20px;
    border-bottom: 1px solid var(--color-ink-200);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.pdsa-card-body { padding: 20px; }

/* 状态标签 */
.pdsa-tag {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 99px;
    font-size: 11px;
    line-height: 1.4;
    background: var(--color-ink-100);
    color: var(--color-ink-700);
    letter-spacing: 0.02em;
}
.pdsa-tag-p    { background: #FAF6E9; color: var(--color-primary-600); }
.pdsa-tag-d    { background: #E6EAF0; color: var(--color-accent-500); }
.pdsa-tag-c    { background: #F4EAD0; color: #8F6B1E; }
.pdsa-tag-a    { background: #E9F3EC; color: #2E6E48; }
.pdsa-tag-warn { background: #F8E8E8; color: #B23A3A; }
.pdsa-tag-info { background: #E6EAF0; color: #1C3355; }
.pdsa-tag-success { background: #E9F3EC; color: #2E6E48; }

/* 登录页背景 */
.pdsa-login-bg {
    background: linear-gradient(135deg, #1e3a5f 0%, #16294a 50%, #0f1d36 100%);
    min-height: 100vh;
    position: relative;
    overflow: hidden;
}
.pdsa-login-bg::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(201,167,106,0.15) 0%, transparent 60%);
    animation: pdsaBgFloat 20s ease-in-out infinite;
}
@keyframes pdsaBgFloat {
    0%, 100% { transform: translate(0, 0); }
    50%      { transform: translate(5%, 5%); }
}

/* 进度条 */
.pdsa-progress {
    background: var(--color-ink-100);
    border-radius: 99px;
    height: 6px;
    overflow: hidden;
}
.pdsa-progress-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--color-accent-500), var(--color-primary-500));
    transition: width .4s;
}

/* 阶段进度(P/D/C/A) */
.pdsa-pdca {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
}
/* PDCA 步骤指示 */
.pdsa-pdca-step {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    background: var(--color-ink-100);
    color: var(--color-ink-700);
    border: 2px solid var(--color-ink-200);
}
.pdsa-pdca-step.active { background: var(--color-accent-600); color: var(--color-primary-400); border-color: var(--color-accent-600); }
.pdsa-pdca-step.done   { background: var(--color-primary-400); color: #fff; border-color: var(--color-primary-400); }

/* Toast - 深海军底 + 金色强调,符合投资咨询风格 */
.pdsa-toast {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 9999;
    min-width: 240px;
    padding: 12px 18px;
    border-radius: 10px;
    background: linear-gradient(180deg, #101E33 0%, #0C1728 100%);
    color: #F2EFE7;
    border-left: 3px solid var(--color-primary-400);
    box-shadow: 0 4px 18px rgba(16,30,51,0.3);
    animation: pdsaSlideIn .3s;
}
.pdsa-toast.success { background: #1B3A2A; border-left-color: #57A578; }
.pdsa-toast.error   { background: #3D1A1A; border-left-color: #D8806A; }
.pdsa-toast.warn    { background: #3D2E1A; border-left-color: #E0B477; }
@keyframes pdsaSlideIn {
    from { transform: translateX(100%); opacity: 0; }
    to   { transform: translateX(0); opacity: 1; }
}

/* Modal */
.pdsa-modal-mask {
    position: fixed; inset: 0;
    background: rgba(15,29,54,0.5);
    z-index: 1000;
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
}
/* Tailwind .hidden 在自定义 .pdsa-modal-mask 之后定义则被覆盖
   这里提高特异性确保 hidden 能可靠隐藏遮罩 */
.pdsa-modal-mask.hidden { display: none; }
.pdsa-modal {
    background: #fff;
    border-radius: 8px;
    max-width: 640px;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
}

/* 表格 */
.pdsa-table { width: 100%; border-collapse: collapse; }
.pdsa-table th {
    text-align: left;
    padding: 11px 14px;
    background: var(--color-ink-100);
    color: var(--color-ink-700);
    font-weight: 600;
    font-size: 12px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border-bottom: 1px solid var(--color-ink-200);
}
.pdsa-table td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--color-ink-200);
    font-size: 13px;
    color: var(--color-ink-900);
}
.pdsa-table tr:hover td { background: var(--color-ink-50); }

/* 按钮(辅助类) */
.pdsa-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0 18px;
    height: 36px;
    border-radius: 99px;
    font-weight: 500;
    font-size: 13px;
    line-height: 1;
    border: 1px solid transparent;
    cursor: pointer;
    transition: all .18s;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
}
.pdsa-btn-primary {
    background: linear-gradient(145deg, var(--color-primary-400) 0%, var(--color-primary-500) 100%);
    color: #fff;
    box-shadow: 0 4px 12px rgba(201,169,97,0.25);
}
.pdsa-btn-primary:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(201,169,97,0.35);
}
.pdsa-btn-accent {
    background: var(--color-accent-500);
    color: #fff;
}
.pdsa-btn-accent:hover { background: var(--color-accent-600); }
.pdsa-btn-ghost {
    background: var(--color-ink-100);
    color: var(--color-ink-900);
    border-color: transparent;
}
.pdsa-btn-ghost:hover { background: var(--color-ink-200); }
.pdsa-btn-danger {
    background: #B23A3A;
    color: #fff;
}
.pdsa-btn-danger:hover { background: #8B2A2A; }

/* 输入 */
.pdsa-input,
.pdsa-select,
.pdsa-textarea {
    width: 100%;
    padding: 8px 14px;
    border: 1px solid transparent;
    border-radius: 99px;
    font-size: 13px;
    background: var(--color-ink-100);
    color: var(--color-ink-900);
    transition: all .18s;
}
.pdsa-textarea { border-radius: 14px; min-height: 80px; padding: 12px 14px; }
.pdsa-input:hover,
.pdsa-select:hover,
.pdsa-textarea:hover { background: var(--color-ink-200); }
.pdsa-input:focus,
.pdsa-select:focus,
.pdsa-textarea:focus {
    background: #fff;
    border-color: var(--color-primary-400);
    outline: none;
    box-shadow: 0 0 0 3px rgba(201,169,97,0.15);
}

/* 移动端适配 */
@media (max-width: 1023px) {
    .pdsa-sidebar { transform: translateX(-100%); position: fixed; z-index: 100; }
    .pdsa-sidebar.open { transform: translateX(0); }
    .pdsa-content { margin-left: 0 !important; }
    .pdsa-mobile-bottom-nav { display: flex !important; }
}

@media (min-width: 1024px) {
    .pdsa-mobile-bottom-nav { display: none !important; }
    .pdsa-hamburger { display: none; }
}

/* 通知铃铛抖动 */
.pdsa-bell-shake { animation: pdsaBellShake 0.5s; }
@keyframes pdsaBellShake {
    0%, 100% { transform: rotate(0); }
    25% { transform: rotate(15deg); }
    75% { transform: rotate(-15deg); }
}

/* 打印 */
@media print {
    .pdsa-sidebar, .pdsa-mobile-bottom-nav, .pdsa-no-print { display: none !important; }
    .pdsa-content { margin: 0 !important; }
    body { background: #fff; }
}

/* =========================================
 * M4 扩展组件(M3.2 + M5 使用)
 * ========================================= */

/* 时间线步骤 */
.pdsa-step {
    position: relative;
    padding-left: 32px;
    padding-bottom: 20px;
}
.pdsa-step::before {
    content: '';
    position: absolute;
    left: 11px; top: 24px; bottom: -4px;
    width: 2px;
    background: var(--color-ink-200);
}
.pdsa-step:last-child::before { display: none; }
.pdsa-step-dot {
    position: absolute;
    left: 0; top: 4px;
    width: 24px; height: 24px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--color-accent-500);
    color: var(--color-accent-500);
    display: flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 600;
}
.pdsa-step-dot.done   { background: var(--color-primary-400); border-color: var(--color-primary-400); color: #fff; }
.pdsa-step-dot.active { background: var(--color-accent-600); border-color: var(--color-accent-600); color: var(--color-primary-400); }

/* 骨架屏 */
.pdsa-skeleton {
    background: linear-gradient(90deg, var(--color-ink-100) 0%, var(--color-ink-50) 50%, var(--color-ink-100) 100%);
    background-size: 200% 100%;
    animation: pdsaSkeleton 1.4s ease-in-out infinite;
    border-radius: 8px;
    color: transparent !important;
}
@keyframes pdsaSkeleton {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* 空状态 */
.pdsa-empty {
    text-align: center;
    padding: 40px 20px;
    color: #6b7280;
}
.pdsa-empty .pdsa-empty-icon {
    font-size: 48px;
    opacity: 0.3;
    margin-bottom: 8px;
}

/* 5 星评分容器 */
.pdsa-rating label { transition: color .15s; }
.pdsa-rating input:checked ~ label,
.pdsa-rating label:hover,
.pdsa-rating label:hover ~ label { color: #c9a76a; }

/* Canvas 签名板 */
.pdsa-signature-pad {
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}
.pdsa-signature-pad canvas { cursor: crosshair; touch-action: none; }

/* 支付倒计时 */
.pdsa-pay-countdown {
    font-family: 'Courier New', monospace;
    letter-spacing: 2px;
    color: #8a6f3d;
}

/* 角色徽章 */
.pdsa-role-tag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 500;
    background: #e0e7ff;
    color: #1e3a8a;
}
.pdsa-role-tag-super     { background: #fef3c7; color: #92400e; }
.pdsa-role-tag-service   { background: #dbeafe; color: #1d4ed8; }
.pdsa-role-tag-analyst   { background: #d1fae5; color: #047857; }
.pdsa-role-tag-ai        { background: #ede9fe; color: #6d28d9; }
.pdsa-role-tag-client    { background: #fce7f3; color: #be185d; }

/* Tab 切换 */
.pdsa-tab-bar {
    display: flex;
    border-bottom: 2px solid #eef0f4;
    margin-bottom: 16px;
    overflow-x: auto;
}
.pdsa-tab {
    padding: 10px 16px;
    cursor: pointer;
    color: #6b7280;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    white-space: nowrap;
    transition: color .15s, border-color .15s;
}
.pdsa-tab:hover { color: #1e3a5f; }
.pdsa-tab.active { color: #1e3a5f; border-bottom-color: #1e3a5f; font-weight: 600; }

/* 菜单树(管理后台) */
.pdsa-menu-tree { list-style: none; padding: 0; margin: 0; }
.pdsa-menu-tree li { padding: 4px 0; }
.pdsa-menu-tree .pdsa-menu-toggle { cursor: pointer; user-select: none; }
.pdsa-menu-tree .pdsa-menu-children { margin-left: 20px; border-left: 1px dashed #d1d5db; padding-left: 10px; }

/* 折叠面板 */
.pdsa-collapse summary {
    cursor: pointer;
    list-style: none;
    padding: 10px 12px;
    background: #f9fafb;
    border-radius: 6px;
    font-weight: 500;
}
.pdsa-collapse summary::-webkit-details-marker { display: none; }
.pdsa-collapse summary::after { content: '▾'; float: right; color: #6b7280; }
.pdsa-collapse[open] summary::after { content: '▴'; }
.pdsa-collapse[open] summary { background: #f0f4fa; color: #1e3a5f; }

/* 高亮行 */
.pdsa-row-highlight { background: #fffbeb !important; }

/* 操作日志级别色 */
.pdsa-log-info  { color: #1d4ed8; }
.pdsa-log-warn  { color: #92400e; }
.pdsa-log-error { color: #b91c1c; }

/* 移动端响应式(细化) */
@media (max-width: 640px) {
    .pdsa-card { border-radius: 6px; }
    .pdsa-card-header { padding: 10px 12px; }
    .pdsa-card-body   { padding: 12px; }
    .pdsa-modal       { max-width: 100%; }
    h1 { font-size: 1.125rem !important; }
}

/* 通知 toast 抖动 */
.pdsa-toast.shake { animation: pdsaSlideIn .3s, pdsaBellShake 0.4s 0.3s; }
