:root {
    --bg-primary: #FCFBF8;
    --bg-nav: rgba(255, 255, 255, 0.96);
    --bg-input: #F5F5F5;
    --bg-card: #FFFFFF;
    --bg-card-hover: #FFFAF5;
    --text-primary: #333333;
    --text-secondary: #666666;
    --text-muted: #999999;
    --text-placeholder: #BBBBBB;
    --accent: #FFDAB9;
    --accent-hover: #FFCBA4;
    --accent-deep: #FFA07A;
    --accent-light: #FFF5EE;
    --border: #EEEEEE;
    --border-light: #F0F0F0;
    --success: #52C41A;
    --success-bg: #F6FFED;
    --danger: #FF4D4F;
    --danger-bg: #FFF2F0;
    --warning: #FA8C16;
    --warning-bg: #FFF7E6;
    --info: #1890FF;
    --info-bg: #E6F7FF;
    --font-heading: 'ZCOOL KuaiLe', cursive, sans-serif;
    --font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
    --font-mono: 'SF Mono', 'JetBrains Mono', monospace;
    --radius-xs: 6px;
    --radius-sm: 10px;
    --radius-md: 14px;
    --radius-lg: 20px;
    --radius-xl: 40px;
    --nav-height: 70px;
    --sidebar-width: 240px;
    --transition: all 0.25s ease;
    --safe-area-top: env(safe-area-inset-top, 0px);
    --safe-area-bottom: env(safe-area-inset-bottom, 0px);
    --border-color: #EEEEEE;
    --border-color-light: #F0F0F0;
    --card-bg: #FFFFFF;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{font-size:16px;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;}
body{font-family:var(--font-body);font-size:15px;line-height:1.6;color:var(--text-primary);background-color:var(--bg-primary);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
a{color:var(--accent-deep);text-decoration:none;transition:var(--transition);}
a:hover{color:var(--accent-hover);}
ul,ol{list-style:none;}
img{max-width:100%;display:block;}
button{font-family:inherit;cursor:pointer;border:none;background:none;}
input,textarea,select{font-family:inherit;font-size:inherit;color:inherit;}
h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:400;color:var(--text-primary);line-height:1.3;}
h1{font-size:2.4rem;letter-spacing:2px;}
h2{font-size:1.8rem;letter-spacing:2px;}
h3{font-size:1.4rem;letter-spacing:1.5px;}
h4{font-size:1.15rem;letter-spacing:1px;}
p{color:var(--text-secondary);}
code,pre{font-family:var(--font-mono);}
::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-xl);}
::-webkit-scrollbar-thumb:hover{background:var(--accent);}
.text-accent{color:var(--accent-deep);}
.text-muted{color:var(--text-muted);}
.text-center{text-align:center;}
.hidden{display:none!important;}
.mt-8{margin-top:8px;}
.mt-16{margin-top:16px;}
.mt-24{margin-top:24px;}
.mt-32{margin-top:32px;}
.app-shell{min-height:100vh;background-color:var(--bg-primary);}
.glass-nav{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--nav-height);padding:0 40px;padding-top:var(--safe-area-top);display:flex;align-items:center;justify-content:space-between;background:var(--bg-nav);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(0,0,0,0.06);box-sizing:content-box;}
.glass-nav .nav-brand{display:flex;align-items:center;gap:10px;}
.glass-nav .brand-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);background:var(--accent-light);color:var(--accent-deep);}
.glass-nav .brand-icon svg{width:22px;height:22px;}
.glass-nav .brand-text{font-family:var(--font-heading);font-size:1.4rem;letter-spacing:2px;color:var(--text-primary);}
.glass-nav .nav-links{display:none;align-items:center;gap:8px;}
.glass-nav .nav-link{padding:8px 18px;font-size:0.95rem;color:var(--text-secondary);border-radius:var(--radius-xl);transition:var(--transition);}
.glass-nav .nav-link:hover{color:var(--text-primary);background:var(--accent-light);}
.glass-nav .nav-link.active{color:var(--text-primary);background:var(--accent);}
.glass-nav .nav-actions{display:flex;align-items:center;gap:16px;}
.glass-nav .nav-user{display:flex;align-items:center;gap:10px;padding:6px 14px 6px 6px;border-radius:var(--radius-xl);background:var(--bg-card);border:1px solid var(--border);transition:var(--transition);}
.glass-nav .nav-user:hover{border-color:var(--accent);}
.glass-nav .nav-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;color:var(--text-primary);font-size:0.85rem;font-weight:600;}
.glass-nav .nav-username{font-size:0.88rem;color:var(--text-primary);}
.glass-nav .nav-toggle{display:flex;width:40px;height:40px;border-radius:var(--radius-sm);align-items:center;justify-content:center;color:var(--text-primary);cursor:pointer;}
.glass-nav .nav-toggle svg{width:24px;height:24px;}
.sidebar{position:fixed;top:calc(var(--nav-height) + 16px);left:16px;bottom:16px;width:var(--sidebar-width);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 8px 32px rgba(0,0,0,0.08),0 2px 8px rgba(0,0,0,0.04);overflow-y:auto;overflow-x:hidden;padding:24px 0 80px;z-index:90;transition:transform 0.3s ease;display:none;}
.main-content{margin-left:0;margin-top:var(--nav-height);padding:24px 16px 80px;min-height:calc(100vh - var(--nav-height));}
/* 移动端：移动菜单默认显示，PC 在下方媒体查询覆盖 */
.mobile-nav-sidebar{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:80vw;background:var(--bg-card);z-index:200;transform:translateX(-100%);transition:transform 0.3s ease;overflow-y:auto;padding:calc(var(--nav-height) + 12px) 0 20px;box-shadow:none;}
.mobile-nav-sidebar.mobile-open{transform:translateX(0);box-shadow:4px 0 24px rgba(0,0,0,0.1);}
.mobile-nav-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.4);z-index:199;opacity:0;visibility:hidden;transition:opacity 0.3s ease,visibility 0.3s ease;}
.mobile-nav-sidebar.mobile-open ~ .mobile-nav-overlay{opacity:1;visibility:visible;}
body.mobile-nav-open{overflow:hidden;}
/* PC 端 */
@media(min-width:769px){
    .glass-nav .nav-links{display:flex!important;}
    .glass-nav .nav-toggle{display:none!important;}
    .glass-nav{justify-content:space-between;padding:0 24px;}
    .main-content{margin-left:calc(var(--sidebar-width) + 32px);padding:32px 40px 80px;}
    .sidebar{display:block;}
    .mobile-nav-sidebar,.mobile-nav-overlay{display:none;}
}
/* 教程页未登录模式：无顶部/左侧偏移 */
.tutorial-guest{margin:0 auto!important;width:100%;}
.sidebar-header{padding:0 20px 20px;border-bottom:1px solid var(--border);margin-bottom:12px;}
.sidebar-brand{display:flex;align-items:center;gap:10px;}
.sidebar-brand-icon{width:36px;height:36px;border-radius:var(--radius-md);background:var(--accent);color:var(--text-primary);font-size:1.1rem;font-weight:700;display:flex;align-items:center;justify-content:center;}
.sidebar-brand-text{font-size:1.05rem;font-weight:600;color:var(--text-primary);letter-spacing:0.5px;}
.sidebar-section{margin-bottom:8px;}
.sidebar-section-title{padding:12px 24px 6px;font-size:0.72rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;}
.sidebar-menu{list-style:none;}
.sidebar-item{margin:2px 12px;}
.sidebar-link{display:flex;align-items:center;gap:12px;padding:11px 14px;font-size:0.92rem;color:var(--text-secondary);border-radius:var(--radius-sm);transition:var(--transition);cursor:pointer;}
.sidebar-link:hover{background:var(--accent-light);color:var(--text-primary);}
.sidebar-link.active{background:var(--accent);color:var(--text-primary);font-weight:500;}
.sidebar-link svg{width:20px;height:20px;flex-shrink:0;}
.sidebar-link .sidebar-label{flex:1;}
.sidebar-link .sidebar-arrow{width:16px;height:16px;transition:transform 0.25s ease;}
.sidebar-link.collapsed .sidebar-arrow{transform:rotate(-90deg);}
.sidebar-submenu{max-height:0;overflow:hidden;transition:max-height 0.3s ease;}
.sidebar-submenu.open{max-height:500px;}
.sidebar-submenu .sidebar-link{padding-left:46px;font-size:0.86rem;}
.sidebar-submenu .sidebar-link.active{background:var(--accent-light);color:var(--accent-deep);}
.sidebar-footer{position:absolute;bottom:0;left:0;right:0;padding:16px 20px;border-top:1px solid var(--border);background:var(--bg-card);border-radius:0 0 var(--radius-lg) var(--radius-lg);}
.sidebar-footer .user-mini{display:flex;align-items:center;gap:10px;}
.sidebar-footer .user-mini .nav-avatar{width:36px;height:36px;}
.sidebar-footer .user-mini-info{flex:1;min-width:0;}
.sidebar-footer .user-mini-name{font-size:0.88rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sidebar-footer .user-mini-role{font-size:0.74rem;color:var(--text-muted);}
.sidebar-overlay{display:none;position:fixed;top:var(--nav-height);left:0;right:0;bottom:0;background:rgba(0,0,0,0.3);z-index:85;}
.sidebar-overlay.show{display:block;}
.main-content.no-sidebar{margin-left:0;}
.page-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:28px;}
.page-title{font-family:var(--font-heading);font-size:1.7rem;letter-spacing:2px;color:var(--text-primary);}
.page-subtitle{font-size:0.9rem;color:var(--text-muted);margin-top:4px;}
.page-actions{display:flex;align-items:center;gap:12px;}
.content-section{margin-bottom:32px;}
.section-title{font-family:var(--font-heading);font-size:1.2rem;letter-spacing:1.5px;color:var(--text-primary);margin-bottom:16px;}
.grid{display:grid;gap:20px;}
.grid-2{grid-template-columns:repeat(2,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-4{grid-template-columns:repeat(4,1fr);}
.glass-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 28px;font-family:var(--font-body);font-size:0.95rem;font-weight:500;color:var(--text-primary);background:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-xl);transition:var(--transition);white-space:nowrap;user-select:none;}
.glass-btn:hover{background:var(--accent-hover);border-color:var(--accent-hover);}
.glass-btn:active{transform:scale(0.97);}
.glass-btn svg{width:18px;height:18px;}
.glass-btn-secondary{background:transparent;border-color:var(--border);color:var(--text-muted);}
.glass-btn-secondary:hover{background:var(--accent-light);border-color:var(--accent);color:var(--text-primary);}
.glass-btn-primary{background:var(--accent-deep);border-color:var(--accent-deep);color:#FFFFFF;}
.glass-btn-primary:hover{background:#FF8E66;border-color:#FF8E66;color:#FFFFFF;}
.glass-btn-danger{background:var(--danger);border-color:var(--danger);color:#FFFFFF;}
.glass-btn-danger:hover{background:#FF7875;border-color:#FF7875;color:#FFFFFF;}
.glass-btn-text{background:transparent;border-color:transparent;color:var(--accent-deep);padding:8px 14px;}
.glass-btn-text:hover{background:var(--accent-light);border-color:transparent;color:var(--accent-deep);}
.glass-btn-sm{padding:7px 18px;font-size:0.82rem;}
.glass-btn-lg{padding:15px 36px;font-size:1.05rem;}
.glass-btn-block{display:flex;width:100%;}
.glass-btn:disabled,.glass-btn.disabled{opacity:0.45;cursor:not-allowed;pointer-events:none;}
.glass-btn-icon{padding:10px;width:42px;height:42px;border-radius:50%;}
.glass-btn-icon.glass-btn-sm{width:34px;height:34px;padding:7px;}
.glass-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:28px;transition:var(--transition);}
.glass-card:hover{border-color:var(--accent);}
.glass-card-lg{border-radius:var(--radius-lg);padding:36px;}
.glass-card-sm{border-radius:var(--radius-sm);padding:18px;}
.glass-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border-light);}
.glass-card-title{font-family:var(--font-heading);font-size:1.15rem;letter-spacing:1px;color:var(--text-primary);}
.glass-card-body{color:var(--text-secondary);}
.glass-card-footer{margin-top:20px;padding-top:16px;border-top:1px solid var(--border-light);display:flex;align-items:center;justify-content:flex-end;gap:12px;}
.glass-input{width:100%;padding:12px 18px;font-size:0.92rem;color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-xl);transition:var(--transition);outline:none;}
.glass-input::placeholder{color:var(--text-placeholder);}
.glass-input:hover{border-color:var(--text-placeholder);}
.glass-input:focus{border-color:var(--accent-deep);background:var(--accent-light);}
.glass-input:disabled{opacity:0.55;cursor:not-allowed;}
textarea.glass-input{border-radius:var(--radius-md);min-height:120px;resize:vertical;line-height:1.6;}
select.glass-input{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23999999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 18px center;padding-right:44px;cursor:pointer;}
.input-group{display:flex;align-items:stretch;border-radius:var(--radius-xl);overflow:hidden;border:1px solid var(--border);background:var(--bg-input);transition:var(--transition);}
.input-group:focus-within{border-color:var(--accent-deep);background:var(--accent-light);}
.input-group .input-prefix,.input-group .input-suffix{display:flex;align-items:center;padding:0 16px;color:var(--text-muted);font-size:0.9rem;background:transparent;}
.input-group .input-prefix svg{width:18px;height:18px;}
.input-group .glass-input{border:none;background:transparent;border-radius:0;}
.input-group .glass-input:focus{background:transparent;}
.search-box{position:relative;max-width:360px;}
.search-box .search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--text-muted);pointer-events:none;}
.search-box .glass-input{padding-left:44px;}
.table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-card);}
.log-table{width:100%;border-collapse:collapse;}
.log-table th{text-align:left;padding:14px 18px;font-size:0.75rem;font-weight:500;color:var(--text-muted);background:var(--bg-primary);border-bottom:1px solid var(--border-light);white-space:nowrap;}
.log-table td{padding:14px 18px;font-size:0.85rem;color:var(--text-secondary);border-bottom:1px solid var(--border-light);}
.log-table tr:last-child td{border-bottom:none;}
.log-table tr:hover td{background:var(--bg-card-hover);}
.log-table .cell-mono{font-family:var(--font-mono);font-size:0.8rem;}
.log-table .cell-primary{color:var(--text-primary);font-weight:500;}
.log-table .cell-actions{display:flex;gap:8px;}
.log-table .table-empty{text-align:center;padding:48px 18px;color:var(--text-muted);}
.badge{display:inline-flex;align-items:center;gap:4px;font-size:0.68rem;font-weight:500;padding:2px 10px;border-radius:var(--radius-xl);border:1px solid;line-height:1.6;white-space:nowrap;}
.badge-success{background:var(--success-bg);border-color:var(--success);color:var(--success);}
.badge-danger{background:var(--danger-bg);border-color:var(--danger);color:var(--danger);}
.badge-warning{background:var(--warning-bg);border-color:var(--warning);color:var(--warning);}
.stat-chip{display:inline-flex;align-items:center;padding:4px 14px;background:var(--bg-input,#f5f3ef);border-radius:20px;font-size:0.82rem;color:var(--text-secondary,#666);border:1px solid var(--border-color-light,#e8e4dc);}
.badge-info{background:var(--info-bg);border-color:var(--info);color:var(--info);}
.badge-accent{background:var(--accent-light);border-color:var(--accent);color:var(--accent-deep);}
.badge-default{background:var(--bg-primary);border-color:var(--border);color:var(--text-muted);}
.badge-dot{width:8px;height:8px;border-radius:50%;display:inline-block;}
.badge-dot-success{background:var(--success);}
.badge-dot-danger{background:var(--danger);}
.badge-dot-warning{background:var(--warning);}
.toast-container{position:fixed;top:calc(var(--nav-height) + 20px);right:24px;z-index:9999;display:flex;flex-direction:column;gap:12px;max-width:360px;}
.toast{display:flex;align-items:center;gap:12px;padding:12px 20px;border-radius:var(--radius-xl);background:var(--bg-card);border:1px solid var(--border);font-size:0.9rem;color:var(--text-primary);animation:toastIn 0.4s cubic-bezier(0.68,-0.55,0.265,1.55);}
.toast.toast-out{animation:toastOut 0.3s ease forwards;}
.toast svg{width:20px;height:20px;flex-shrink:0;}
.toast-success{border-color:var(--success);color:var(--success);}
.toast-success .toast-message{color:var(--text-primary);}
.toast-error{border-color:var(--danger);color:var(--danger);}
.toast-error .toast-message{color:var(--text-primary);}
.toast-warning{border-color:var(--warning);color:var(--warning);}
.toast-warning .toast-message{color:var(--text-primary);}
.toast-info{border-color:var(--info);color:var(--info);}
.toast-info .toast-message{color:var(--text-primary);}
.toast-message{flex:1;color:var(--text-primary);}
.toast-close{width:20px;height:20px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);border-radius:50%;transition:var(--transition);}
.toast-close:hover{color:var(--text-primary);background:var(--bg-input);}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;}
.stat-card{padding:24px 20px;text-align:center;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);transition:var(--transition);}
.stat-card:hover{border-color:var(--accent);}
.stat-icon{width:44px;height:44px;margin:0 auto 12px;border-radius:var(--radius-sm);background:var(--accent-light);color:var(--accent-deep);display:flex;align-items:center;justify-content:center;}
.stat-icon svg{width:24px;height:24px;}
.stat-value{font-family:var(--font-heading);font-size:2rem;font-weight:700;color:var(--accent-deep);line-height:1.2;}
.stat-label{font-size:0.82rem;color:var(--text-muted);margin-top:4px;}
.stat-trend{font-size:0.76rem;margin-top:8px;}
.stat-trend.up{color:var(--success);}
.stat-trend.down{color:var(--danger);}
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.4);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:opacity 0.25s ease,visibility 0.25s ease;}
.modal-overlay.show{opacity:1;visibility:visible;}
.modal{width:100%;max-width:480px;max-height:90vh;overflow-y:auto;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);transform:translateY(20px);transition:transform 0.3s ease;}
.modal-overlay.show .modal{transform:translateY(0);}
.modal-lg{max-width:720px;}
.modal-sm{max-width:360px;}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:24px 28px 16px;border-bottom:1px solid var(--border-light);}
.modal-title{font-family:var(--font-heading);font-size:1.25rem;letter-spacing:1.5px;color:var(--text-primary);}
.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);color:var(--text-muted);transition:var(--transition);}
.modal-close:hover{color:var(--text-primary);background:var(--bg-input);}
.modal-close svg{width:20px;height:20px;}
.modal-body{padding:24px 28px;color:var(--text-secondary);max-height:calc(80vh - 120px);overflow-y:auto;}
.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 28px 24px;padding-bottom:calc(24px + var(--safe-area-bottom));border-top:1px solid var(--border-light);}
.switch{position:relative;display:inline-block;width:46px;height:26px;flex-shrink:0;}
.switch input{opacity:0;width:0;height:0;}
.switch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--border);border-radius:var(--radius-xl);transition:var(--transition);}
.switch-slider::before{content:"";position:absolute;height:20px;width:20px;left:3px;bottom:3px;background:var(--bg-card);border-radius:50%;transition:var(--transition);}
.switch input:checked+.switch-slider{background:var(--accent);}
.switch input:checked+.switch-slider::before{transform:translateX(20px);}
.switch input:disabled+.switch-slider{opacity:0.5;cursor:not-allowed;}
.switch-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;}
.switch-row .switch-label{flex:1;}
.switch-row .switch-label-title{font-size:0.92rem;color:var(--text-primary);}
.switch-row .switch-label-desc{font-size:0.8rem;color:var(--text-muted);margin-top:2px;}
.form-group{margin-bottom:22px;}
.form-label{display:block;margin-bottom:8px;font-size:0.88rem;font-weight:500;color:var(--text-primary);}
.form-label .required{color:var(--danger);margin-left:2px;}
.form-hint{margin-top:6px;font-size:0.78rem;color:var(--text-muted);}
.form-error{margin-top:6px;font-size:0.78rem;color:var(--danger);}
.form-row{display:flex;gap:16px;}
.form-row .form-group{flex:1;}
.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:28px;}
.form-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px;}
.form-card .form-card-title{font-family:var(--font-heading);font-size:1.2rem;letter-spacing:1.5px;color:var(--text-primary);margin-bottom:6px;}
.form-card .form-card-desc{font-size:0.85rem;color:var(--text-muted);margin-bottom:24px;}
.form-check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:0.9rem;color:var(--text-secondary);}
.form-check input[type="checkbox"],.form-check input[type="radio"]{width:18px;height:18px;accent-color:var(--accent-deep);cursor:pointer;}
.persona-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;}
.persona-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:24px;transition:var(--transition);cursor:pointer;animation:cardSlideUp 0.4s ease-out both;}
.persona-grid>.persona-card:nth-child(1){animation-delay:0.05s;}
.persona-grid>.persona-card:nth-child(2){animation-delay:0.1s;}
.persona-grid>.persona-card:nth-child(3){animation-delay:0.15s;}
.persona-grid>.persona-card:nth-child(4){animation-delay:0.2s;}
.persona-grid>.persona-card:nth-child(5){animation-delay:0.25s;}
.persona-grid>.persona-card:nth-child(6){animation-delay:0.3s;}
.persona-card:hover{border-color:var(--accent);background:var(--bg-card-hover);transform:translateY(-3px);box-shadow:0 8px 25px rgba(0,0,0,0.06);}
.persona-card.active{border-color:var(--accent-deep);background:var(--accent-light);}
.persona-header{display:flex;align-items:center;gap:14px;margin-bottom:16px;}
.persona-avatar{width:56px;height:56px;border-radius:var(--radius-md);background:var(--accent);display:flex;align-items:center;justify-content:center;font-family:var(--font-heading);font-size:1.4rem;color:var(--text-primary);flex-shrink:0;overflow:hidden;}
.persona-avatar img{width:100%;height:100%;object-fit:cover;}
.persona-info{flex:1;min-width:0;}
.persona-name{font-family:var(--font-heading);font-size:1.15rem;letter-spacing:1px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.persona-tag{font-size:0.76rem;color:var(--text-muted);margin-top:2px;}
.persona-desc{font-size:0.85rem;color:var(--text-secondary);line-height:1.6;margin-bottom:16px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.persona-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:14px;border-top:1px solid var(--border-light);}
.persona-stats{display:flex;align-items:center;gap:14px;font-size:0.76rem;color:var(--text-muted);}
.persona-stats .persona-stat{display:flex;align-items:center;gap:4px;}
.persona-stats svg{width:14px;height:14px;}
.persona-actions{display:flex;gap:6px;}
.persona-form .persona-upload{display:flex;align-items:center;gap:16px;margin-bottom:22px;}
.persona-form .persona-upload .persona-avatar{width:72px;height:72px;font-size:1.8rem;}
.wechat-bind{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:36px;text-align:center;}
.wechat-bind .wechat-icon{width:72px;height:72px;margin:0 auto 20px;border-radius:var(--radius-md);background:var(--success-bg);color:var(--success);display:flex;align-items:center;justify-content:center;}
.wechat-bind .wechat-icon svg{width:40px;height:40px;}
.wechat-bind .wechat-title{font-family:var(--font-heading);font-size:1.3rem;letter-spacing:1.5px;color:var(--text-primary);margin-bottom:8px;}
.wechat-bind .wechat-desc{font-size:0.9rem;color:var(--text-muted);margin-bottom:24px;max-width:420px;margin-left:auto;margin-right:auto;}
.wechat-bind.bound .wechat-icon{background:var(--accent-light);color:var(--accent-deep);}
.wechat-bind .wechat-info{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:20px;padding:14px 20px;background:var(--bg-primary);border-radius:var(--radius-md);}
.wechat-bind .wechat-info .wechat-nickname{font-size:0.95rem;color:var(--text-primary);font-weight:500;}
.wechat-bind .wechat-info .wechat-bindtime{font-size:0.78rem;color:var(--text-muted);}
.wechat-qr{display:inline-block;padding:16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:20px;}
.wechat-qr img{width:180px;height:180px;}
.wechat-qr-tip{font-size:0.8rem;color:var(--text-muted);margin-top:10px;}
.auth-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;padding-top:calc(24px + var(--safe-area-top));}
.auth-card{width:100%;max-width:420px;padding:40px 36px;border-radius:var(--radius-lg);}
.auth-title{text-align:center;font-size:1.8rem;margin-bottom:6px;}
.auth-subtitle{text-align:center;color:var(--text-muted);font-size:0.9rem;margin-bottom:28px;}
.auth-form .form-group{margin-bottom:18px;}
.auth-form .btn-block{width:100%;margin-top:8px;}
.auth-form .code-group{display:flex;gap:10px;align-items:center;}
.auth-form .code-group .glass-input{flex:1;min-width:0;}
.auth-form .code-group .glass-btn{flex-shrink:0;padding:0 16px;height:46px;font-size:0.85rem;white-space:nowrap;}
.auth-switch{text-align:center;margin-top:16px;font-size:0.85rem;color:var(--text-muted);}
.auth-switch a{color:var(--accent-deep);}
.main-container{max-width:960px;margin:0 auto;padding:calc(var(--nav-height) + 24px) 20px calc(80px + var(--safe-area-bottom))}
@media(max-width:480px){.stat-grid{grid-template-columns:1fr;}.glass-nav .brand-text{font-size:1.1rem;}}
@keyframes toastIn{0%{opacity:0;transform:translateX(100px);}100%{opacity:1;transform:translateX(0);}}
@keyframes toastOut{0%{opacity:1;transform:translateX(0);}100%{opacity:0;transform:translateX(100px);}}
@keyframes cardSlideUp{0%{opacity:0;transform:translateY(20px);}100%{opacity:1;transform:translateY(0);}}
@keyframes spin{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
.loading-text{text-align:center;padding:40px 20px;color:var(--text-muted);font-size:0.9rem;}
.empty-text{text-align:center;padding:60px 20px;color:var(--text-muted);font-size:0.9rem;}

.wechat-qr-icon{width:64px;height:64px;margin:0 auto 16px;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--success),#73D13D);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(82,196,26,0.28);}
.wechat-qr-icon svg{width:34px;height:34px;}
.qr-loading{padding:44px 20px;color:var(--text-muted);font-size:0.9rem;display:flex;align-items:center;justify-content:center;gap:8px;}
.qr-loading::before{content:"";width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--accent-deep);border-radius:50%;animation:spin 0.8s linear infinite;}
.qr-error{padding:28px 16px;color:var(--danger);font-size:0.85rem;}
.qr-box{display:inline-block;padding:16px;background:#fff;border-radius:var(--radius-md);box-shadow:0 6px 20px rgba(0,0,0,0.08);border:1px solid var(--border);}
.qr-steps{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-bottom:16px;}
.qr-step{display:flex;align-items:center;gap:6px;font-size:0.78rem;color:var(--text-muted);background:var(--bg-input);border:1px solid var(--border);padding:5px 12px;border-radius:var(--radius-xl);}
.qr-step span{width:18px;height:18px;border-radius:50%;background:var(--accent);color:var(--text-primary);font-size:0.72rem;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;}

@keyframes typingDot{0%,60%,100%{transform:translateY(0);}30%{transform:translateY(-6px);}}
.typing-indicator{display:flex;align-items:center;gap:8px;padding:12px 18px;background:var(--bg-card);border:1px solid var(--border);border-radius:18px;border-bottom-left-radius:4px;max-width:120px;}
.typing-indicator .dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted);animation:typingDot 1.4s ease-in-out infinite;}
.typing-indicator .dot:nth-child(2){animation-delay:0.2s;}
.typing-indicator .dot:nth-child(3){animation-delay:0.4s;}

@keyframes successPulse{0%{transform:scale(1);box-shadow:0 0 0 0 rgba(82,196,26,0.4);}50%{transform:scale(1.05);box-shadow:0 0 0 12px rgba(82,196,26,0);}100%{transform:scale(1);box-shadow:0 0 0 0 rgba(82,196,26,0);}}
.wechat-bind-success{animation:successPulse 0.8s ease-out;}

.chat-page-full .chat-messages .chat-message .message-bubble{box-shadow:0 1px 4px rgba(0,0,0,0.04);}
.chat-page-full .chat-messages .chat-message.user .message-bubble{box-shadow:0 2px 8px rgba(201,123,74,0.22);}
.chat-page-full .chat-messages .chat-message.assistant .message-bubble{box-shadow:0 1px 4px rgba(0,0,0,0.06);}
.chat-page-full .chat-messages .message-time{font-size:0.7rem;color:var(--text-muted);margin-top:2px;padding:0 4px;}

.quick-actions{gap:14px;}
.quick-actions .glass-card:hover{transform:translateY(-2px);border-color:var(--accent-deep);box-shadow:0 4px 16px rgba(255,160,122,0.15);}

.nav-spacer{flex:1;}
.nav-link.qq-link{color:var(--accent-deep);font-weight:600;}
.nav-logout{display:inline-flex;align-items:center;justify-content:center;padding:8px 18px;font-size:0.88rem;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-xl);cursor:pointer;transition:var(--transition);font-family:inherit;}
.nav-logout:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-bg);}
.glass-nav .nav-dropdown .dropdown-menu{min-width:160px;}
.glass-nav .nav-dropdown .dropdown-menu .dropdown-item{padding:9px 14px;font-size:0.85rem;}

.mobile-nav-section{padding:0 16px;margin-bottom:20px;}
.mobile-nav-section-title{font-size:0.72rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;padding:0 12px;margin-bottom:6px;}
.mobile-nav-item{display:flex;align-items:center;gap:10px;padding:12px 14px;font-size:0.95rem;color:var(--text-secondary);border-radius:var(--radius-sm);transition:var(--transition);text-decoration:none;}
.mobile-nav-item:hover{background:var(--accent-light);color:var(--text-primary);}
.mobile-nav-item.active{background:var(--accent);color:var(--text-primary);font-weight:500;}
.mobile-nav-section-bottom{margin-top:auto;padding-top:16px;border-top:1px solid var(--border);}
.mobile-nav-logout{display:flex;align-items:center;justify-content:center;width:100%;padding:12px;font-size:0.95rem;color:var(--danger);background:var(--danger-bg);border:1px solid var(--danger);border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;transition:var(--transition);}
.mobile-nav-logout:hover{background:var(--danger);color:#fff;}

