.ep-layout{min-height:100vh;display:flex;flex-direction:column}
.ep-header{position:sticky;top:0;z-index:100;height:var(--ep-header-height);background:var(--el-bg-color);border-bottom:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-lighter)}
.ep-header-inner{max-width:var(--ep-container-max);margin:0 auto;padding:0 20px;height:100%;display:flex;align-items:center;justify-content:space-between;gap:24px}
.ep-logo img{height:20px;width:auto;vertical-align:middle}
.ep-nav{flex:1;display:flex;align-items:center;justify-content:center;min-width:0}
.ep-nav > ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.ep-nav-item{position:relative}
.ep-nav-item > a{display:inline-flex;align-items:center;padding:0 14px;height:36px;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);font-size:16px;font-weight:500}
.ep-nav-item > a:hover{color:var(--el-color-primary);background:var(--el-color-primary-light-9)}
.ep-nav-item.is-active > a{color:var(--el-color-primary);background:var(--el-color-primary-light-9)}
.ep-nav-arrow{margin-left:4px;font-size:10px;opacity:0.65}
/* 子菜单与父级之间禁止留 margin，否则鼠标经过空隙时父级失去 :hover，菜单会收起 */
.ep-submenu{display:none;position:absolute;left:0;top:100%;min-width:180px;padding:8px 0;margin:0;background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);list-style:none;z-index:200}
.ep-nav-item:hover > .ep-submenu{display:block}
.ep-submenu li a{display:block;padding:8px 16px;color:var(--el-text-color-regular);font-size:14px}
.ep-submenu li a:hover{background:var(--el-fill-color-light);color:var(--el-color-primary)}
.ep-submenu li.is-active > a{color:var(--el-color-primary);font-weight:600}

/* 三级菜单与二级项之间不留缝；左侧透明带承接鼠标，避免移入时丢 hover */
.ep-submenu-nested{left:100%;top:0;margin-left:0;padding-left:0}
.ep-submenu-nested::before{content:"";position:absolute;left:-14px;top:0;bottom:0;width:14px}
.ep-submenu > li{position:relative}
.ep-submenu > li:hover > .ep-submenu-nested{display:block}
.ep-header-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}
.ep-search-popover{position:relative}
.ep-search-toggle{cursor:pointer;padding:8px;border-radius:var(--el-border-radius-base);color:var(--el-text-color-secondary)}
.ep-search-toggle:hover{background:var(--el-fill-color-light);color:var(--el-color-primary)}
.ep-search-panel{display:none;position:absolute;right:0;top:100%;margin-top:0;width:320px;padding:16px;padding-top:20px;background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);z-index:300}
.ep-search-panel::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
.ep-search-popover:hover .ep-search-panel{display:block}
.ep-user{position:relative}
.ep-user-trigger{cursor:pointer;display:flex;align-items:center}
.ep-user-trigger img{width:36px;height:36px;border-radius:50%;object-fit:cover;border:2px solid var(--el-border-color-lighter)}
.ep-user-menu{display:none;position:absolute;right:0;top:100%;margin-top:0;min-width:200px;padding:8px 0;background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);z-index:300}
.ep-user-menu::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
.ep-user:hover .ep-user-menu{display:block}
.ep-user-menu a{display:block;padding:10px 16px;color:var(--el-text-color-regular);font-size:14px}
.ep-user-menu a:hover{background:var(--el-fill-color-light);color:var(--el-color-primary)}
.ep-user-hd{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--el-border-color-lighter)}
.ep-user-hd img{width:48px;height:48px;border-radius:50%}
.ep-main{flex:1;padding:20px 0 40px}
.ep-container{max-width:var(--ep-container-max);margin:0 auto;padding:0 15px}
.ep-breadcrumb{margin-bottom:16px;font-size:14px;color:var(--el-text-color-secondary)}
.ep-breadcrumb a{color:var(--el-text-color-secondary)}
.ep-breadcrumb a:hover{color:var(--el-color-primary)}
.ep-breadcrumb .ep-bc-sep{margin:0 8px;color:var(--el-text-color-placeholder)}
.ep-row{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}
.ep-col-main{flex:1 1 640px;min-width:0}
.ep-col-side{flex:0 1 340px;min-width:280px}

@media (max-width: 991px) {
    .ep-col-main,.ep-col-side{flex:1 1 100%}
    .ep-nav{display:none}
}

.ep-card{background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);border:1px solid var(--el-border-color-lighter);overflow:hidden;margin-bottom:20px}
.ep-card-hd{padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter);font-size:16px;font-weight:600;color:var(--el-text-color-primary)}
.ep-card-bd{padding:20px}
.ep-list-item{display:flex;gap:16px;padding:16px 0;border-bottom:1px solid var(--el-border-color-lighter)}
.ep-list-item:last-child{border-bottom:none}
.ep-thumb{width:150px;height:100px;border-radius:var(--el-border-radius-base);background-size:cover;background-position:center;flex-shrink:0;background-color:var(--el-fill-color)}
img.ep-thumb{object-fit:cover;display:block}
.ep-thumb--sm{width:72px;height:58px}

@media (max-width: 576px) {
    .mobile-hidden{display:none !important}
    .ep-list-item{flex-direction:column}
    .ep-thumb,img.ep-thumb{width:100%;height:160px}
}

.ep-article-title{margin:0 0 8px;font-size:16px;font-weight:600}
.ep-article-title a{color:var(--el-text-color-primary)}
.ep-article-title a:hover{color:var(--el-color-primary)}
.ep-meta{font-size:13px;color:var(--el-text-color-secondary)}
.ep-meta span,.ep-meta a{margin-right:12px}
.ep-badge{display:inline-block;padding:0 8px;height:22px;line-height:22px;font-size:12px;border-radius:var(--el-border-radius-round);background:var(--el-color-primary-light-9);color:var(--el-color-primary);margin:4px 8px 4px 0}
.ep-badge.is-plain{background:var(--el-fill-color-blank);border:1px solid var(--el-color-primary-light-5)}
.ep-footer{margin-top:auto;padding:20px;background:var(--el-bg-color);border-top:1px solid var(--el-border-color-light);font-size:14px;color:var(--el-text-color-secondary)}
.ep-footer-inner{max-width:var(--ep-container-max);margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.ep-footer-links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 16px}
.ep-footer-links a{color:var(--el-text-color-secondary)}
.ep-footer-links a:hover{color:var(--el-color-primary)}
.ep-scrolltop{position:fixed;right:24px;bottom:32px;width:40px;height:40px;border-radius:50%;background:var(--el-color-primary);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--el-box-shadow);z-index:99;border:none;transition:opacity 0.2s}
.ep-scrolltop:hover{opacity:0.9}
/* 分页区域（系统 {$pages} 输出）
   典型结构：<div class="xrpagination"><ul class="pagination"><li class="active"><a>1</a></li>...</ul></div> */
.xrpagination{width:100%;margin-top:24px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center}
.xrpagination ul.pagination{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}
.xrpagination ul.pagination li{margin:0;padding:0;list-style:none}
.xrpagination ul.pagination li > a,.xrpagination ul.pagination li > span{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 12px;font-size:14px;line-height:1;border-radius:var(--el-border-radius-base);border:1px solid var(--el-border-color);background:var(--el-bg-color-overlay);color:var(--el-text-color-regular);box-sizing:border-box;text-decoration:none;transition:color 0.2s,border-color 0.2s,background 0.2s}
.xrpagination ul.pagination li > a:not([href]){cursor:default;background:var(--el-fill-color-light);border-color:var(--el-border-color-lighter);color:var(--el-text-color-secondary)}
.xrpagination ul.pagination li > a[href]:hover{color:var(--el-color-primary);border-color:var(--el-color-primary-light-5)}
.xrpagination ul.pagination li.active > a,.xrpagination ul.pagination li.active > span{background:var(--el-color-primary);border-color:var(--el-color-primary);color:#fff;cursor:default}
.xrpagination ul.pagination li.active > a:hover{color:#fff;border-color:var(--el-color-primary);background:var(--el-color-primary)}
.xrpagination ul.pagination li.disabled > a,.xrpagination ul.pagination li.disabled > span{cursor:not-allowed;opacity:0.55;background:var(--el-fill-color-light)}
.xrpagination > a,.xrpagination > span{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 12px;font-size:14px;border-radius:var(--el-border-radius-base);border:1px solid var(--el-border-color);background:var(--el-bg-color-overlay);color:var(--el-text-color-regular);box-sizing:border-box;text-decoration:none}
.xrpagination > a:hover{color:var(--el-color-primary);border-color:var(--el-color-primary-light-5)}
.xrpagination .active > span,.xrpagination .active > a,.xrpagination li.active > a,.xrpagination span.current,.xrpagination .current{background:var(--el-color-primary);border-color:var(--el-color-primary);color:#fff}
.neirong{line-height:1.75;font-size:15px;color:var(--el-text-color-regular)}
.neirong img{max-width:100%;height:auto}
.fc-show-prev-next{font-size:14px;color:var(--el-text-color-secondary)}
.ep-swiper-wrap{border-radius:var(--el-border-radius-base);overflow:hidden;border:1px solid var(--el-border-color-lighter);background:var(--el-bg-color-overlay)}
.ep-swiper-wrap .swiper-slide img{display:block;width:100%;height:400px;object-fit:cover}
.ep-auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(135deg,var(--el-color-primary-light-9) 0%,var(--el-fill-color-light) 100%)}
.ep-auth-card{width:100%;max-width:480px;text-align:center}
.ep-auth-card .el-card__body{padding:40px 32px}
.ep-404-visual{width:100%;max-width:280px;height:160px;margin:0 auto 16px;border-radius:var(--el-border-radius-base);background:linear-gradient(145deg,var(--el-color-primary-light-7),var(--el-color-primary-light-9));display:flex;align-items:center;justify-content:center;font-size:64px;font-weight:700;color:var(--el-color-primary)}
/* ========== 页面模块化（模板不写内联 style） ========== */
.ep-mt-8{margin-top:8px}
.ep-mb-20{margin-bottom:20px}
.ep-mb-16{margin-bottom:16px}
.ep-mt-16{margin-top:16px}
.ep-flex-grow{flex:1;min-width:0}
.ep-list-desc{margin:0 0 8px;font-size:14px;color:var(--el-text-color-secondary);line-height:1.6}
.ep-list-desc--tight{line-height:1.5}
.ep-list-item--flush{padding:0;border:none}
.ep-side-hit-row{display:flex;gap:12px;margin-bottom:16px}
.ep-side-hit-title{display:block;font-weight:600;font-size:14px;color:var(--el-text-color-primary);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
a.ep-side-hit-title:hover{color:var(--el-color-primary)}
.ep-side-hit-desc{font-size:12px;color:var(--el-text-color-secondary);margin-top:4px}
.ep-latest-row{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--el-border-color-lighter)}
.ep-latest-title{font-weight:600;font-size:14px;color:var(--el-text-color-primary);text-decoration:none}
a.ep-latest-title:hover{color:var(--el-color-primary)}
.ep-latest-time{font-size:12px;color:var(--el-text-color-secondary);margin-top:4px}
.ep-yqlj-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--el-border-color-lighter)}
.ep-card-body--tight-y{padding-top:8px;padding-bottom:8px}
.ep-btn-icon-noshrink{flex-shrink:0}
.ep-header-search-input{width:100%;margin-bottom:12px}
.ep-header-search-submit{width:100%}
.ep-user-name{font-weight:600}
.ep-user-meta{font-size:12px;color:var(--el-text-color-secondary)}
.ep-search-filters{margin-bottom:24px}
.ep-search-row{display:flex;align-items:flex-start;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.ep-search-row--center{align-items:center}
.ep-search-label{width:72px;font-weight:600;flex-shrink:0}
.ep-search-field{flex:1;display:flex;flex-wrap:wrap;gap:8px}
.ep-search-divider{border-bottom:1px dashed var(--el-border-color);margin:12px 0}
.ep-search-keyword-wrap{width:260px;max-width:100%}
/* 详情页 */
.ep-show-card-body{padding:28px}
.ep-show-title{margin:0 0 16px;font-size:22px;font-weight:600;color:var(--el-text-color-primary)}
.ep-show-meta{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:20px;font-size:13px;color:var(--el-text-color-secondary)}
.ep-show-tags{margin-top:24px}
.ep-show-prevnext-wrap{margin-top:28px;padding-top:20px;border-top:1px solid var(--el-border-color-lighter)}
.ep-show-related{margin-top:28px}
.ep-show-related-title{font-size:16px;font-weight:600;margin-bottom:16px}
.ep-show-related-grid{gap:16px}
.ep-show-related-col{flex:1 1 calc(33.333% - 12px);min-width:200px}
.ep-related-card{height:100%}
.ep-related-cover{display:block;height:140px;overflow:hidden;border-radius:4px 4px 0 0}
.ep-related-cover img{width:100%;height:100%;object-fit:cover;display:block}
.ep-related-title{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}
a.ep-related-title:hover{color:var(--el-color-primary)}
.ep-related-desc{font-size:12px;color:var(--el-text-color-secondary);margin:8px 0}
.ep-related-date{font-size:12px;color:var(--el-text-color-placeholder)}
.ep-page-card{margin-top:16px}
.ep-page-body{padding:32px 40px}
.ep-page-title{text-align:center;margin:0 0 24px;font-size:26px;font-weight:600}
/* 频道封面标题链 */
.ep-cat-title-link{font-size:16px;font-weight:600}
/* 提示 / 404 文案 */
.ep-msg-icon-box{font-size:48px;margin-bottom:16px}
.ep-msg-icon--ok{color:var(--el-color-success)}
.ep-msg-icon--err{color:var(--el-color-danger)}
.ep-msg-title{margin:0 0 12px;font-size:20px;font-weight:600}
.ep-msg-actions{font-size:14px;color:var(--el-text-color-secondary)}
.ep-404-msg{margin:0 0 20px;font-size:15px;color:var(--el-text-color-secondary)}
/* 可视化编辑占位（dev/action） */
.ep-dev-hint{text-align:center;padding-top:30px}
.ep-mobile-menu-btn{display:none;width:40px;height:40px;align-items:center;justify-content:center;cursor:pointer;font-size:20px;color:var(--el-text-color-primary);z-index:9998}
.ep-nav-header {display: none;}
@media (max-width: 992px) {
    .ep-mobile-menu-btn {display: flex !important;}
    .ep-header-inner {position: relative;}
    .ep-nav {position: fixed !important;top: 0 !important;left: -300px !important;width: 300px;background: var(--world);z-index: 9999 !important;overflow-y: auto;transition: left 0.3s ease;padding: 0;display: block !important;flex: none !important;}
    .ep-nav.is-open {left: 0 !important;box-shadow: 2px 0 20px rgba(0,0,0,0.4);}
    .ep-nav-header {height: 60px;display: flex;align-items: center;justify-content: space-between;padding: 0 20px;background: var(--world2);color: var(--ink);}
    .ep-nav-header-title{font-size:18px;font-weight:600}
    .ep-nav-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:20px}
    .nav-right .search-box{display:none}
    .ep-nav.is-open .nav-links{display:flex;flex-direction:column;align-items:stretch}
    .ep-nav > ul{flex-direction:column;align-items:stretch;gap:0;padding:10px 0}
    .ep-nav-item{width:100%;border-bottom:1px dashed var(--line)}
    .ep-nav-item:last-child{border-bottom:none}
    .ep-nav-item > a{height:auto;padding:16px 20px;display:flex;align-items:center;justify-content:space-between;border-radius:0;font-size:16px;color:var(--ink)}
    .ep-nav-item > a:hover{background:rgba(0, 212, 166, 0.10);color:var(--accent)}
    .ep-nav-arrow{font-size:12px;transition:transform 0.3s}
    .ep-nav-item.is-open > a .ep-nav-arrow{transform:rotate(180deg)}
    .ep-submenu{position:static !important;box-shadow:none !important;padding:0;background:var(--canvas) !important;display:none;border-top:1px dashed var(--line)}
    .ep-nav-item:hover .ep-submenu, .ep-nav-item.is-open .ep-submenu{display:block}
    .ep-submenu li > a{padding:14px 20px 14px 40px;display:block;font-size:15px;color:var(--muted2)}
    .ep-submenu li > a:hover{background:transparent;color:var(--accent)}
    .ep-submenu-nested{padding-left:0}
    .ep-submenu-nested li > a{padding-left:60px}
    .market-grid{grid-template-columns:repeat(2, 1fr)}
}