*{margin:0;padding:0;box-sizing:border-box;font-family:-apple-system,BlinkMacFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;}
body{background:#f5f5f5;color:#333;overflow-x:hidden;}
.loader-wrapper{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999999;background:#7171c6;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity 0.5s,visibility 0.5s;}
.loader-wrapper.hide{opacity:0;visibility:hidden;}
.loader{width:50px;height:50px;border:3px solid rgba(255,255,255,0.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.loader-text{color:#fff;margin-top:20px;font-size:14px;}
.header{background:#fff;position:sticky;top:0;z-index:1000;box-shadow:0 1px 3px rgba(0,0,0,0.05);}
.header-top{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;max-width:1400px;margin:0 auto;}
.header-left{display:flex;align-items:center;gap:12px;}
.menu-btn{width:36px;height:36px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer;border-radius:8px;transition:background 0.2s;position:relative;}
.menu-btn:hover{background:#f0f0f0;}
.menu-btn span{display:block;width:20px;height:2px;background:#333;border-radius:1px;transition:all 0.3s;}
.menu-btn.active span:nth-child(1){transform:rotate(45deg) translate(5px,5px);}
.menu-btn.active span:nth-child(2){opacity:0;}
.menu-btn.active span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px);}
.logo{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:700;color:#333;}
.logo-icon{
width:35px;
height:35px;
background:url(https://siyecaoscw.top/txe.png) no-repeat center;
background-size:contain;
border-radius:6px;
}
.header-right{display:flex;align-items:center;gap:12px;}
.user-info{display:none;align-items:center;gap:8px;font-size:14px;color:#666;}
.user-info.show{display:flex;}
.logout-btn{padding:6px 14px;border:1px solid #eee;background:#fff;border-radius:20px;font-size:13px;cursor:pointer;color:#666;transition:all 0.2s;}
.logout-btn:hover{background:#f5f0f0;}
.login-trigger{padding:8px 20px;background:#4a90e2;color:#fff;border:none;border-radius:20px;font-size:14px;cursor:pointer;transition:background 0.2s;}
.login-trigger:hover{background:#357abd;}

.float-menu{
position:fixed;
top:70px;
left:16px;
width:200px;
background:#fff;
border-radius:12px;
box-shadow:0 5px 20px rgba(0,0,0,0.15);
padding:10px 0;
z-index:999999;
transform-origin:left top;
transform:scale(0.95);
opacity:0;
visibility:hidden;
transition:all 0.25s ease;
}
.float-menu.show{
transform:scale(1);
opacity:1;
visibility:visible;
}
.float-menu::before{
content:'';
position:absolute;
top:-6px;
left:16px;
width:12px;
height:12px;
background:#fff;
transform:rotate(45deg);
border-radius:2px;
}
.sidebar-header{padding:12px 20px;border-bottom:1px solid #f0f0f0;}
.sidebar-title{font-size:15px;font-weight:600;color:#333;}
.sidebar-menu{padding:4px 0;}
.sidebar-item{display:flex;align-items:center;gap:10px;padding:11px 20px;cursor:pointer;transition:background 0.2s;color:#555;font-size:14px;border-radius:6px;margin:0 8px;}
.sidebar-item:hover{background:#f8f9fa;}
.sidebar-item i{width:20px;text-align:center;color:#888;}
.sidebar-divider{height:1px;background:#f0f0f0;margin:6px 12px;}

.overlay{
position:fixed;
top:0;left:0;
width:100%;height:100%;
background:rgba(0,0,0,0.3);
z-index:1000;
opacity:0;
visibility:hidden;
transition:all 0.25s ease;
}
.overlay.show{
opacity:1;
visibility:visible;
}

.banner-section{width:100%;background:#fff;padding:16px 0;}
.banner-container{max-width:1400px;margin:0 auto;padding:0 16px;position:relative;}
.banner-slider{
position:relative;
width:100%;
aspect-ratio:16/5;
max-height:200px;
border-radius:12px;
overflow:hidden;
background:#f0f0f0;
}
.banner-slide{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transition:opacity 0.6s ease;object-fit:contain;background:#ffffff;}
.banner-slide.active{opacity:1;}
.banner-dots{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);display:flex;gap:8px;z-index:10;}
.banner-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,0.5);cursor:pointer;transition:all 0.3s;}
.banner-dot.active{background:#fff;width:24px;border-radius:4px;}
.banner-nav{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;background:rgba(255,255,255,0.8);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;color:#333;opacity:0;transition:opacity 0.3s;z-index:10;}
.banner-slider:hover .banner-nav{opacity:1;}
.banner-nav.prev{left:12px;}
.banner-nav.next{right:12px;}

.alert-bar{
background:#fffbeb;
border-radius:999px;
padding:10px 16px;
margin:16px auto;
max-width:1400px;
font-size:13px;
color:#92400e;
display:flex;
align-items:center;
overflow:hidden;
position:relative;
}
.alert-bar-content{
display:inline-block;
white-space:nowrap;
animation:marquee 20s linear infinite;
padding-left:100%;
}
@keyframes marquee{
0%{transform:translateX(0);}
100%{transform:translateX(-100%);}
}

.filter-section{background:#fff;padding:16px;}
.filter-container{max-width:1400px;margin:0 auto;}
.filter-group{margin-bottom:12px;}
.filter-group:last-child{margin-bottom:0;}
.filter-head{
display:flex;
align-items:center;
gap:10px;
margin-bottom:8px;
}
.filter-label{
font-size:14px;
color:#666;
font-weight:500;
white-space:nowrap;
}
.filter-scroll{
display:flex;
gap:8px;
overflow-x:auto;
overflow-y:hidden;
padding-bottom:4px;
scrollbar-width:none;
}
.filter-scroll::-webkit-scrollbar{display:none;}
.filter-btn{
white-space:nowrap;
padding:8px 16px;
border:1px solid #e5e5e5;
background:#fff;
border-radius:20px;
font-size:14px;
cursor:pointer;
transition:all 0.2s;
color:#555;
flex-shrink:0;
}
.filter-btn:hover{border-color:#4a90e2;color:#4a90e2;}
.filter-btn.active{background:#4a90e2;color:#fff;border-color:#4a90e2;}
.search-box{
display:flex;
align-items:center;
border:1px solid #e5e5e5;
border-radius:8px;
overflow:hidden;
background:#fff;
width:100%;
max-width:300px;
margin:12px auto 0;
}
.search-input{border:none;padding:8px 14px;font-size:14px;width:100%;outline:none;}

.content-section{max-width:1400px;margin:0 auto;padding:0 16px 40px;}
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}
.section-title{font-size:20px;font-weight:600;color:#333;}
.result-count{font-size:14px;color:#999;}
.materials-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
@media (min-width:640px){.materials-grid{grid-template-columns:repeat(3,1fr);gap:16px;}}
@media (min-width:1024px){.materials-grid{grid-template-columns:repeat(5,1fr);gap:20px;}}
.material-card{background:transparent;cursor:pointer;transition:all 0.3s;position:relative;}
.card-image-wrap{
position:relative;
width:100%;
aspect-ratio:4/3;
overflow:hidden;
background:#fff;
border-radius:12px;
border: 1.5px solid #9D9D9D;
}

.card-image{width:100%;height:100%;object-fit:cover;}
.card-badges{position:absolute;top:10px;left:10px;display:flex;gap:8px;}
.badge{padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;color:#fff;}
.badge-copyright{background:#ff6b6b;}
.badge-new{background:#51cf66;}
.card-info{padding:10px 0;}
.card-title{font-size:15px;font-weight:500;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;}
.card-meta{display:flex;align-items:center;justify-content:space-between;}
.card-date{font-size:12px;color:#999;white-space:nowrap;}
.card-preview{font-size:15px;color:#4a90e2;font-weight:500;}

.pagination{display:flex;align-items:center;justify-content:center;gap:8px;padding:40px 0 20px;}
.page-btn{min-width:36px;height:36px;border:1px solid #e5e5e5;background:#fff;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:#555;transition:all 0.2s;}
.page-btn:hover:not(:disabled){border-color:#4a90e2;color:#4a90e2;}
.page-btn.active{background:#4a90e2;color:#fff;border-color:#4a90e2;}
.page-btn:disabled{opacity:0.4;cursor:not-allowed;}
.page-input{width:50px;height:36px;border:1px solid #e5e5e5;border-radius:8px;text-align:center;font-size:14px;outline:none;}
.page-jump{padding:0 14px;}

.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.6);z-index:2000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:all 0.3s;padding:16px;}
.modal.show{opacity:1;visibility:visible;}
.modal-content{background:#fff;border-radius:16px;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;transform:scale(0.9);transition:transform 0.3s;}
.modal.show .modal-content{transform:scale(1);}
.modal-header{padding:20px 24px;border-bottom:1px solid #f0f0f0;display:flex;align-items:center;justify-content:space-between;}
.modal-title{font-size:18px;font-weight:600;}
.modal-close{width:32px;height:32px;border:none;background:#f5f5f5;border-radius:50%;cursor:pointer;font-size:18px;color:#666;display:flex;align-items:center;justify-content:center;}
.modal-close:hover{background:#eee;}
.modal-body{padding:24px;}
.form-group{margin-bottom:20px;}
.form-label{display:block;font-size:14px;color:#555;margin-bottom:8px;font-weight:500;}
.form-input{width:100%;padding:12px 16px;border:1px solid #e5e5e5;border-radius:10px;font-size:15px;outline:none;transition:border-color 0.2s;}
.form-input:focus{border-color:#4a90e2;}
.captcha-wrap{display:flex;gap:12px;align-items:center;}
.captcha-img{height:44px;border-radius:8px;cursor:pointer;border:1px solid #e5e5e5;}
.submit-btn{width:100%;padding:14px;background:#4a90e2;color:#fff;border:none;border-radius:10px;font-size:16px;font-weight:600;cursor:pointer;transition:background 0.2s;}
.submit-btn:hover{background:#357abd;}
.submit-btn:disabled{opacity:0.6;cursor:not-allowed;}

.detail-modal .modal-content{max-width:800px;}
.detail-image{width:100%;border-radius:12px;margin-bottom:20px;}
.detail-title{font-size:22px;font-weight:700;margin-bottom:12px;}
.detail-desc{font-size:15px;color:#666;line-height:1.6;margin-bottom:24px;}
.detail-actions{display:flex;gap:12px;}
.download-btn{
flex:1;
padding:14px;
background:#87CEEB;
color:#fff;
border:none;
border-radius:10px;
font-size:16px;
font-weight:600;
cursor:pointer;
transition:background 0.2s;
}
.download-btn:hover{background:#7ecbec;}
.download-btn:disabled{opacity:0.6;cursor:not-allowed;}

.toast{position:fixed;top:20px;left:50%;transform:translateX(-50%) translateY(-100px);background:#333;color:#fff;padding:12px 24px;border-radius:8px;font-size:14px;z-index:3000;opacity:0;transition:all 0.3s;}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1;}
.toast.error{background:#ff6b6b;}
.toast.success{background:#51cf66;}

footer{background:#fff;padding:30px 16px;text-align:center;border-top:1px solid #f0f0f0;margin-top:40px;}
.footer-text{font-size:13px;color:#999;line-height:1.8;}

@media (max-width:640px){
.banner-slider{
aspect-ratio:16/4;
max-height:120px;
}
}
.card-image-wrap {
    position: relative;
    overflow: hidden;
}
.img-loading-mask {
    position: absolute;
    inset: 0;
    background: #f5f5f5;
    z-index: 2;
}
.card-image,
.detail-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    filter: blur(12px) contrast(1.2);
    transition: filter 0.5s ease-out, opacity 0.45s ease;
}
.fixed-wechat-float {
position: fixed;
right: 20px;
bottom: 80px;
width: 50px;
height: 50px;
border-radius: 50%;
background-color: #07C160;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 9999;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
transition: all 0.3s ease;
font-size: 24px;
color: #fff;
font-weight: bold;
}
.fixed-wechat-float:hover {
transform: scale(1.1);
}
.wechat-qrcode-modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.7);
display: none;
align-items: center;
justify-content: center;
z-index: 10000;
}
.wechat-qrcode-box {
width: 280px;
height: 280px;
background-color: #fff;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.wechat-qrcode-box img {
width: 240px;
height: 240px;
object-fit: cover;
}
.wechat-qrcode-close {
position: absolute;
top: -40px;
right: 0;
color: #fff;
font-size: 32px;
cursor: pointer;
}
.material-card {
    height: 100%;
    display: flex;
    flex-direction: column;
}
.card-info {
    flex: 1;
}
.card-title {
    word-break: break-all;
}
