/* ===== 游戏资源论坛 - 响应式游戏风主题(移动端优先) ===== */
:root{
  /* Bilibili 浅色风格 */
  --bg:#f6f7f8; --bg2:#ffffff; --card:#ffffff; --card2:#f4f5f7;
  --line:#e3e5e7; --pri:#fb7299; --pri2:#00aeec; --ok:#2ba471;
  --warn:#ff9800; --danger:#f25d8e; --txt:#18191c; --sub:#9499a0;
  --field:#f1f2f3; --code:#f6f7f8; --head:rgba(255,255,255,.92);
  --radius:12px; --shadow:0 2px 12px rgba(0,0,0,.08);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;}
body{
  font-family:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);
  color:var(--txt); min-height:100vh; line-height:1.6; overflow-x:hidden;
}
a{color:var(--pri2);text-decoration:none;}
img{max-width:100%;display:block;}
button{font-family:inherit;}
input,textarea,select{font-family:inherit;}

/* ---- 顶部导航 ---- */
.header{
  position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;
  padding:12px 18px;border-bottom:1px solid var(--line);
  background:var(--head);backdrop-filter:blur(12px);
}
.logo{font-size:18px;font-weight:700;color:var(--txt);white-space:nowrap;cursor:pointer;
  display:flex;align-items:center;gap:9px;}
.mark{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--pri),var(--pri2));
  display:inline-flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#fff;flex:0 0 auto;vertical-align:middle;}
.logo img{width:28px;height:28px;border-radius:8px;object-fit:cover;}
.nav{display:flex;align-items:center;gap:6px;}
.nav a{color:var(--sub);font-size:14px;padding:8px 12px;border-radius:10px;transition:.2s;white-space:nowrap;}
.nav a:hover,.nav a.active{color:var(--pri);background:var(--card2);}
/* authArea 用 display:contents, 让登录后的"后台/用户名/退出"直接成为 .nav 的横向 flex 项 */
#authArea{display:contents;}
.nav .user-chip{color:var(--txt);font-size:13px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.hamburger{display:none;background:none;border:none;color:var(--txt);font-size:24px;cursor:pointer;}

/* ---- 通用容器 ---- */
.container{max-width:1080px;margin:0 auto;padding:20px 18px 60px;}
.section-title{font-size:19px;font-weight:700;margin:28px 0 12px;display:flex;align-items:center;gap:10px;}
.section-title::before{content:"";width:4px;height:18px;border-radius:4px;background:linear-gradient(var(--pri),var(--pri2));}
/* B站式版块头(标题 + 查看更多) */
.sec-head{display:flex;align-items:center;justify-content:space-between;margin:28px 0 12px;gap:10px;}
.sec-head .section-title{margin:0;}
.sec-head .more{font-size:13px;color:var(--sub);white-space:nowrap;flex:0 0 auto;transition:.15s;}
.sec-head .more:hover{color:var(--pri);}
/* B站式版块头(标题 + 更多入口) */
.sec-head{display:flex;align-items:center;justify-content:space-between;margin:28px 0 12px;}
.sec-head .h{font-size:19px;font-weight:700;display:flex;align-items:center;gap:10px;}
.sec-head .h::before{content:"";width:4px;height:18px;border-radius:4px;background:linear-gradient(var(--pri),var(--pri2));}
.sec-head .more{font-size:13px;color:var(--sub);display:inline-flex;align-items:center;gap:3px;transition:.15s;white-space:nowrap;}
.sec-head .more:hover{color:var(--pri);}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;}
.spacer{flex:1;}
.muted{color:var(--sub);font-size:13px;}

/* ---- 按钮 ---- */
.btn{background:var(--pri);color:#fff;border:none;
  padding:9px 16px;border-radius:9px;cursor:pointer;font-size:14px;font-weight:600;
  transition:background .15s,transform .05s;display:inline-flex;align-items:center;gap:6px;justify-content:center;}
.btn:hover{background:#f25c8a;}
.btn:active{transform:translateY(1px);}

/* PC端发布悬浮按钮 */
.fab-publish{position:fixed;right:32px;bottom:40px;z-index:900;
  display:inline-flex;align-items:center;gap:8px;text-decoration:none;
  padding:14px 22px 14px 18px;border-radius:999px;color:#fff;font-weight:800;font-size:16px;
  background:linear-gradient(135deg,var(--pri),var(--pri2));
  box-shadow:0 10px 26px rgba(251,114,153,.45);
  transition:transform .15s ease,box-shadow .15s ease;}
.fab-publish svg{width:22px;height:22px;}
.fab-publish:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 16px 34px rgba(251,114,153,.55);}
.fab-publish:active{transform:translateY(0) scale(.98);}
.fab-publish .fab-text{letter-spacing:2px;}

/* 后台权限校验占位(校验通过前不渲染后台布局) */
.admin-guard{min-height:100vh;display:flex;align-items:center;justify-content:center;
  color:var(--sub);font-size:15px;}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--txt);}
.btn.ghost:hover{background:var(--card2);border-color:var(--pri);}
.btn.sm{padding:5px 11px;font-size:13px;border-radius:7px;}
.btn.block{width:100%;}
.btn.warn{background:#d98418;}
.btn.warn:hover{background:#c2740f;}
.btn.danger{background:#d84159;}
.btn.danger:hover{background:#c2334a;}
.btn.ok{background:#1f9d68;}
.btn.ok:hover{background:#188055;}
.btn:disabled{opacity:.5;cursor:not-allowed;}

/* ---- 卡片 ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;transition:.2s;}
.card.hover:hover{border-color:var(--pri);transform:translateY(-3px);box-shadow:var(--shadow);}
.grid{display:grid;gap:14px;}
.grid.cols{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));}
.grid.cols2{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));}

/* ---- 标签 ---- */
.tag{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:700;}
.tag.free{background:#e5f6ee;color:#1a8c5a;}
.tag.paid{background:#fff3e0;color:#e08600;}
.tag.outer{background:#e2f5fc;color:#0090c4;}
.tag.vip{background:#fde8f0;color:#e0447f;}
.tag.normal{background:var(--card2);color:var(--sub);}
.tag.top{background:#fdeaef;color:#e5537b;}
.tag.best{background:#fff6da;color:#c99700;}

/* ---- 顶部 Banner 轮播 (B站风格) ---- */
.hero-slider{position:relative;width:100%;height:300px;border-radius:16px;overflow:hidden;
  margin:6px 0 22px;background:linear-gradient(120deg,var(--pri),var(--pri2));box-shadow:var(--shadow);}
.hero-slider .slide{position:absolute;inset:0;opacity:0;transition:opacity .7s;pointer-events:none;}
.hero-slider .slide.on{opacity:1;pointer-events:auto;}
.hero-slider .slide img{width:100%;height:100%;object-fit:cover;}
.hero-overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;
  align-items:center;text-align:center;padding:24px;z-index:2;pointer-events:none;
  background:linear-gradient(0deg,rgba(0,0,0,.28),rgba(0,0,0,.04));}
.hero-overlay h1{color:#fff;font-size:clamp(24px,5vw,40px);font-weight:800;line-height:1.25;
  text-shadow:0 3px 14px rgba(0,0,0,.35);}
.hero-overlay p{color:#fff;opacity:.96;margin-top:12px;font-size:clamp(13px,3vw,18px);
  text-shadow:0 2px 10px rgba(0,0,0,.35);}
.hero-dots{position:absolute;bottom:14px;left:0;right:0;display:flex;gap:6px;justify-content:center;z-index:3;}
.hero-dots i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.55);cursor:pointer;transition:.2s;}
.hero-dots i.on{background:#fff;width:22px;border-radius:5px;}
.hero-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:40px;height:40px;
  border:none;border-radius:50%;background:rgba(0,0,0,.28);color:#fff;font-size:24px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;opacity:0;transition:.2s;}
.hero-slider:hover .hero-arrow{opacity:1;}
.hero-arrow:hover{background:var(--pri);}
.hero-arrow.prev{left:14px;}
.hero-arrow.next{right:14px;}

/* ---- 推荐内容 (广告外链 横向滑动) ---- */
.rec-wrap{position:relative;}
.rec-scroll{display:flex;gap:12px;overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x proximity;
  padding:2px;scrollbar-width:none;-ms-overflow-style:none;}
.rec-scroll::-webkit-scrollbar{display:none;}
.rec-item{flex:0 0 262px;scroll-snap-align:start;display:flex;align-items:center;gap:12px;padding:12px;
  border:1px solid var(--line);border-radius:12px;background:var(--card);transition:.15s;cursor:pointer;}
.rec-item:hover{border-color:var(--pri);box-shadow:var(--shadow);transform:translateY(-2px);}
.rec-item img{width:56px;height:56px;border-radius:10px;object-fit:cover;flex:0 0 auto;background:var(--field);}
.rec-item .rec-txt{min-width:0;flex:1;}
.rec-item .rec-t{font-weight:700;font-size:14px;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rec-item .rec-d{font-size:12px;color:var(--sub);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rec-item .rec-ad{flex:0 0 auto;font-size:10px;color:var(--sub);border:1px solid var(--line);
  border-radius:4px;padding:1px 5px;align-self:flex-start;}
.rec-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:34px;height:34px;
  border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--txt);font-size:20px;
  cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);transition:.15s;}
.rec-arrow:hover{background:var(--pri);color:#fff;border-color:var(--pri);}
.rec-arrow.prev{left:-6px;}
.rec-arrow.next{right:-6px;}
@media(max-width:768px){.rec-arrow{display:none;}}

/* 门户公告 */
.notice-list .notice-item{padding:9px 0;border-bottom:1px dashed var(--line);font-size:14px;color:var(--sub);}
.notice-list a.notice-item{display:block;transition:.15s;}
.notice-list a.notice-item:hover{color:var(--pri);}
.notice-list a.notice-item::after{content:" ›";color:var(--pri2);}
.notice-list .notice-item:last-child{border-bottom:none;}
.notice-list .notice-item::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--pri2);margin-right:8px;vertical-align:middle;}

/* 友情链接 */
.friend-links{display:flex;flex-wrap:wrap;gap:10px;}
.friend-links a{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--line);
  border-radius:10px;background:var(--card);color:var(--sub);font-size:13px;transition:.15s;}
.friend-links a:hover{color:var(--txt);border-color:var(--pri);}
.friend-links a img{width:18px;height:18px;border-radius:4px;object-fit:cover;}

/* 帖子卡片 */
.post-card{cursor:pointer;padding:0;overflow:hidden;}
.post-card .pc-cover{height:150px;background:var(--field);overflow:hidden;}
.post-card .pc-cover img{width:100%;height:100%;object-fit:cover;transition:transform .3s;}
/* 无图帖子的系统默认封面: 用网站名生成的文字水印, 保持卡片视觉协调 */
.post-card .pc-cover.ph{display:flex;align-items:center;justify-content:center;padding:10px;
  background:linear-gradient(135deg,#eaf4ff 0%,#f3ecfb 100%);position:relative;overflow:hidden;}
.post-card .pc-cover.ph::before{content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 30% 20%,rgba(0,174,236,.10),transparent 60%),
             radial-gradient(circle at 80% 90%,rgba(251,114,153,.12),transparent 60%);}
.post-card .pc-cover.ph .ph-name{position:relative;font-size:20px;font-weight:800;letter-spacing:1px;
  text-align:center;line-height:1.35;max-width:100%;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  background:linear-gradient(135deg,var(--pri),var(--pri2));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--pri);}
.post-card.hover:hover .pc-cover img{transform:scale(1.06);}
.post-card .pc-body{padding:12px 14px;}
.post-card h3{font-size:14px;line-height:1.5;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;font-weight:600;}
.post-card .meta{color:var(--sub);font-size:12px;display:flex;gap:10px;margin-top:10px;flex-wrap:wrap;}
/* 详情页封面仍用 .cover */
.cover{width:100%;height:130px;object-fit:cover;border-radius:10px;margin-bottom:10px;background:var(--field);}

/* ---- B站风格板块卡片 ---- */
.sec-card{display:flex;align-items:center;gap:12px;cursor:pointer;}
.sec-card .sec-ic{width:46px;height:46px;border-radius:12px;flex:0 0 auto;color:#fff;font-weight:800;
  font-size:19px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--pri),var(--pri2));}
.sec-card .sec-info{flex:1;min-width:0;}
.sec-card .sec-info h3{font-size:15px;font-weight:700;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sec-card .sec-info .muted{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sec-card .sec-count{flex:0 0 auto;font-size:12px;color:var(--sub);background:var(--field);
  padding:4px 10px;border-radius:999px;}

/* ---- 表单 ---- */
.field{margin-bottom:12px;}
.field label{display:block;font-size:13px;color:var(--sub);margin-bottom:5px;}
.input,textarea.input,select.input{
  width:100%;padding:11px 12px;border-radius:10px;border:1px solid var(--line);
  background:var(--field);color:var(--txt);font-size:14px;outline:none;transition:.2s;}
.input:focus{border-color:var(--pri);}
textarea.input{min-height:120px;resize:vertical;}

/* ---- 弹窗 ---- */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.65);display:none;
  align-items:center;justify-content:center;z-index:200;padding:16px;}
.modal.show{display:flex;}
.modal .box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px;width:100%;max-width:420px;max-height:90vh;overflow:auto;box-shadow:var(--shadow);}
.modal h3{margin-bottom:14px;}
.tabs{display:flex;gap:8px;margin-bottom:14px;}
.tabs span{flex:1;text-align:center;padding:9px;border-radius:10px;cursor:pointer;
  background:var(--field);color:var(--sub);font-size:14px;transition:.2s;}
.tabs span.on{background:var(--pri);color:#fff;}

/* ---- 列表/详情 ---- */
.comment{border-top:1px solid var(--line);padding:12px 0;}
.comment .who{font-size:13px;color:var(--pri2);font-weight:600;}
.comment .txt{font-size:14px;margin-top:4px;}
.detail-content{background:var(--card2);border-radius:10px;padding:18px;margin:14px 0;
  word-break:break-word;font-size:15px;line-height:1.8;}
.detail-content img{border-radius:8px;margin:8px 0;}
.detail-content a{color:var(--pri2);text-decoration:underline;}
.detail-content h2{font-size:20px;margin:14px 0 8px;}
.detail-content h3{font-size:17px;margin:12px 0 6px;}
.detail-content ul,.detail-content ol{padding-left:24px;margin:8px 0;}
.detail-content blockquote{border-left:3px solid var(--pri);background:rgba(108,92,231,.08);
  margin:10px 0;padding:8px 14px;color:var(--sub);border-radius:0 8px 8px 0;}
.detail-content pre{background:var(--code);border:1px solid var(--line);border-radius:8px;padding:12px;
  overflow:auto;font-family:Consolas,Monaco,monospace;font-size:13px;margin:10px 0;}
.detail-content p{margin:6px 0;}
.video-embed{position:relative;width:100%;max-width:640px;padding-top:56.25%;margin:12px 0;}
.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:8px;}
.back-link{color:var(--sub);font-size:14px;cursor:pointer;display:inline-flex;gap:4px;align-items:center;}

/* ---- 版块头 "更多" 入口 ---- */
.section-title .more{margin-left:auto;font-size:13px;font-weight:500;color:var(--sub);
  display:inline-flex;align-items:center;gap:2px;transition:.15s;}
.section-title .more:hover{color:var(--pri);}

/* ---- 骨架屏 ---- */
.skeleton{background:linear-gradient(90deg,var(--field) 25%,#e9eaec 37%,var(--field) 63%);
  background-size:400% 100%;animation:sk 1.3s ease infinite;border-radius:8px;}
@keyframes sk{0%{background-position:100% 0;}100%{background-position:0 0;}}
.sk-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:0 0 14px;overflow:hidden;}
.sk-card .sk-cover{height:150px;border-radius:0;}
.sk-card .sk-line{height:12px;margin:12px 14px 0;}
.sk-banner{height:300px;border-radius:16px;margin:6px 0 22px;}
@media(max-width:768px){.sk-banner{height:180px;}.sk-card .sk-cover{height:120px;}}

/* ---- 用户中心侧栏 ---- */
.uc-layout{display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:start;}
.uc-menu .item{padding:11px 14px;border-radius:10px;cursor:pointer;color:var(--sub);font-size:14px;transition:.2s;}
.uc-menu .item:hover,.uc-menu .item.on{background:var(--card);color:var(--txt);}

/* ---- 表格 ---- */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);}
table{width:100%;border-collapse:collapse;min-width:560px;}
th,td{padding:10px 12px;text-align:left;font-size:13px;border-bottom:1px solid var(--line);white-space:nowrap;}
th{color:var(--sub);background:var(--bg2);position:sticky;top:0;}
tr:hover td{background:rgba(108,92,231,.06);}

/* ---- toast ---- */
#toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);
  background:rgba(24,25,28,.92);color:#fff;padding:12px 22px;border-radius:12px;
  display:none;z-index:500;font-size:14px;max-width:90vw;text-align:center;box-shadow:var(--shadow);}
#toast.show{display:block;animation:pop .2s;}
@keyframes pop{from{opacity:0;transform:translate(-50%,10px);}to{opacity:1;transform:translate(-50%,0);}}

/* ---- 加载/空 ---- */
.loading,.empty{text-align:center;color:var(--sub);padding:44px 0;font-size:14px;
  display:flex;flex-direction:column;align-items:center;gap:12px;}
.spin{width:24px;height:24px;border:3px solid var(--line);border-top-color:var(--pri);
  border-radius:50%;animation:sp .8s linear infinite;}
@keyframes sp{to{transform:rotate(360deg);}}
.empty-box{width:46px;height:34px;border:2px solid var(--line);border-radius:8px;position:relative;}
.empty-box::before{content:"";position:absolute;left:8px;right:8px;top:11px;height:2px;background:var(--line);border-radius:2px;}
.empty-box::after{content:"";position:absolute;left:8px;right:18px;top:19px;height:2px;background:var(--line);border-radius:2px;}

/* ---- 底部移动导航 ---- */
.tabbar{display:none;position:fixed;bottom:0;left:0;right:0;z-index:150;
  background:var(--head);backdrop-filter:blur(12px);border-top:1px solid var(--line);}
.tabbar a{flex:1;text-align:center;padding:9px 0 8px;color:var(--sub);font-size:11px;}
.tabbar a.active{color:var(--pri2);}
.tabbar a .ic{display:block;margin:0 auto 2px;}
.tabbar a .ic svg{width:22px;height:22px;}

/* ---- 后台 ---- */
.admin-layout{display:grid;grid-template-columns:230px 1fr;min-height:100vh;}
.admin-side{background:var(--bg2);border-right:1px solid var(--line);padding:18px 12px;}
.admin-side .brand{font-weight:800;font-size:18px;padding:8px 12px 18px;color:var(--pri2);}
.admin-side .m{padding:11px 14px;border-radius:10px;color:var(--sub);cursor:pointer;font-size:14px;margin-bottom:2px;}
.admin-side .m:hover,.admin-side .m.on{background:var(--card);color:var(--txt);}
.admin-main{padding:22px;overflow:auto;}
.kpi{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;}
.kpi .b{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;}
.kpi .b b{font-size:28px;color:var(--pri2);display:block;}
.kpi .b span{color:var(--sub);font-size:13px;}
footer{text-align:center;color:var(--sub);padding:24px;font-size:12px;border-top:1px solid var(--line);}

/* ---- DIY 可视化编辑器 ---- */
.diy-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px;}
.diy-wrap{display:grid;grid-template-columns:220px 1fr;gap:16px;align-items:start;}
.diy-palette{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px;position:sticky;top:78px;}
.diy-palette h4{font-size:13px;color:var(--sub);margin-bottom:10px;}
.palette-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px dashed var(--line);border-radius:10px;
  margin-bottom:8px;cursor:pointer;font-size:13px;color:var(--txt);transition:.15s;background:var(--bg2);}
.palette-item:hover{border-color:var(--pri);border-style:solid;}
.palette-item .add{margin-left:auto;color:var(--pri2);font-weight:700;}
.diy-canvas{min-height:200px;display:flex;flex-direction:column;gap:12px;}
.diy-empty{border:2px dashed var(--line);border-radius:var(--radius);padding:40px;text-align:center;color:var(--sub);}
.diy-module{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.12s;}
.diy-module.drag-over{border-color:var(--pri2);box-shadow:0 0 0 2px rgba(0,210,255,.25);}
.diy-module.dragging{opacity:.5;}
.module-head{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--bg2);border-bottom:1px solid var(--line);}
.module-head .drag{cursor:grab;color:var(--sub);font-size:16px;user-select:none;}
.module-head .mtype{font-weight:700;font-size:14px;}
.module-head .mtag{font-size:11px;color:var(--sub);}
.module-head .ops{margin-left:auto;display:flex;gap:4px;}
.module-body{padding:12px;display:flex;flex-direction:column;gap:10px;}
.module-body .frow{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.module-body label{font-size:12px;color:var(--sub);min-width:64px;}
.diy-item{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:8px;}
.diy-item .input{flex:1;min-width:120px;}
.switch{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--txt);cursor:pointer;}

@media(max-width:768px){
  .diy-wrap{grid-template-columns:1fr;}
  .diy-palette{position:static;display:flex;flex-wrap:wrap;gap:8px;}
  .diy-palette h4{width:100%;}
  .palette-item{margin-bottom:0;flex:1 1 130px;}
}

/* ============ 移动端适配 ============ */
@media(max-width:768px){
  .nav .desktop-only{display:none;}
  .hamburger{display:block;}
  .nav.open{position:absolute;top:56px;right:12px;flex-direction:column;align-items:stretch;
    background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:8px;
    box-shadow:var(--shadow);min-width:180px;}
  .nav.open .desktop-only{display:block;}
  .nav.open a{padding:11px 14px;}
  .uc-layout{grid-template-columns:1fr;}
  .uc-menu{display:flex;overflow-x:auto;gap:8px;padding-bottom:6px;}
  .uc-menu .item{white-space:nowrap;}
  .container{padding-bottom:80px;}
  .fab-publish{display:none;}
  .tabbar{display:flex;}
  .grid.cols{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}
  /* 后台移动端: 侧栏变顶部横滑 */
  .admin-layout{grid-template-columns:1fr;}
  .admin-side{border-right:none;border-bottom:1px solid var(--line);
    display:flex;overflow-x:auto;padding:10px;align-items:center;}
  .admin-side .brand{display:none;}
  .admin-side .m{white-space:nowrap;margin:0 2px;}
  .admin-main{padding:16px;}
  th,td{white-space:nowrap;}
}
@media(max-width:420px){
  .stats .b{min-width:80px;padding:12px;}
  .post-card .pc-cover{height:120px;}
}

/* ============ 富文本编辑器 (Discuz 风格) ============ */
.editor{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--field);}
.ed-toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:7px 8px;background:var(--bg2);
  border-bottom:1px solid var(--line);}
.ed-group{display:flex;gap:1px;padding:0 4px;position:relative;}
.ed-group:not(:last-child)::after{content:"";position:absolute;right:0;top:4px;bottom:4px;width:1px;background:var(--line);}
.ed-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;
  background:transparent;border:none;border-radius:7px;color:var(--sub);cursor:pointer;transition:.12s;}
.ed-btn:hover{background:var(--card2);color:var(--txt);}
.ed-btn svg{width:18px;height:18px;}
.ed-area{min-height:280px;max-height:60vh;overflow:auto;padding:16px 18px;color:var(--txt);
  font-size:15px;line-height:1.8;outline:none;word-break:break-word;}
.ed-area:empty::before{content:attr(data-ph);color:var(--sub);}
.ed-area img{max-width:100%;border-radius:8px;margin:6px 0;}
.ed-area a{color:var(--pri2);text-decoration:underline;}
.ed-area blockquote{border-left:3px solid var(--pri);background:rgba(108,92,231,.08);
  margin:10px 0;padding:8px 14px;color:var(--sub);border-radius:0 8px 8px 0;}
.ed-area pre{background:var(--code);border:1px solid var(--line);border-radius:8px;padding:12px;
  font-family:Consolas,Monaco,monospace;font-size:13px;overflow:auto;}
.ed-area ul,.ed-area ol{padding-left:26px;}
.ed-area .video-embed{position:relative;width:100%;max-width:560px;padding-top:56.25%;margin:10px 0;}
.ed-area .video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:8px;}
.ed-emoji{display:flex;flex-wrap:wrap;gap:2px;padding:10px;background:var(--card);
  border-top:1px solid var(--line);max-height:180px;overflow:auto;}
.ed-emoji[hidden]{display:none;}
.ed-emo{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;
  font-size:19px;cursor:pointer;border-radius:7px;transition:.1s;}
.ed-emo:hover{background:var(--card2);transform:scale(1.15);}
.editor.ed-fullscreen{position:fixed;inset:0;z-index:400;border-radius:0;display:flex;flex-direction:column;}
.editor.ed-fullscreen .ed-area{max-height:none;flex:1;}

/* ============ 发布页 (Discuz 风格) ============ */
.pub-wrap{display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:start;}
.pub-main{display:flex;flex-direction:column;gap:14px;}
.pub-side{display:flex;flex-direction:column;gap:14px;position:sticky;top:78px;}
.pub-titlebar{display:flex;gap:10px;align-items:center;}
.pub-titlebar .sel{flex:0 0 130px;}
.pub-title{flex:1;font-size:17px;font-weight:600;padding:13px 14px;border-radius:10px;
  border:1px solid var(--line);background:var(--field);color:var(--txt);outline:none;transition:.2s;}
.pub-title:focus{border-color:var(--pri);}
.pub-card-title{font-size:14px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:8px;color:var(--txt);}
.pub-card-title::before{content:"";width:3px;height:14px;border-radius:3px;background:var(--pri);}
.type-tabs{display:flex;gap:6px;flex-wrap:wrap;}
.type-tabs .t{flex:1;min-width:70px;text-align:center;padding:9px 6px;border-radius:9px;cursor:pointer;
  background:var(--field);border:1px solid var(--line);color:var(--sub);font-size:13px;font-weight:600;transition:.15s;}
.type-tabs .t:hover{border-color:var(--pri);color:var(--txt);}
.type-tabs .t.on{background:var(--pri);border-color:var(--pri);color:#fff;}
.cover-drop{border:1px dashed var(--line);border-radius:10px;padding:14px;text-align:center;
  cursor:pointer;color:var(--sub);font-size:13px;transition:.15s;background:var(--field);}
.cover-drop:hover{border-color:var(--pri);color:var(--txt);}
.cover-drop img{max-height:120px;margin:0 auto;border-radius:8px;}
.attach-item{display:flex;align-items:center;gap:8px;background:var(--field);border:1px solid var(--line);
  border-radius:8px;padding:9px 12px;font-size:13px;margin-top:8px;}
.attach-item .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt);}
.attach-item .rm{color:var(--danger);cursor:pointer;font-weight:700;}
.pub-actions{display:flex;gap:10px;position:sticky;bottom:0;background:var(--card);
  padding:14px 0 0;margin-top:4px;}
@media(max-width:900px){
  .pub-wrap{grid-template-columns:1fr;}
  .pub-side{position:static;}
}
@media(max-width:480px){
  .pub-titlebar{flex-direction:column;align-items:stretch;}
  .pub-titlebar .sel{flex:none;}
  .ed-btn{width:30px;height:30px;}
}

/* ===== 视频教程 ===== */
.video-card{overflow:hidden;padding:0;}
.video-card .vc-cover{position:relative;aspect-ratio:16/9;background:#e9edf0;overflow:hidden;}
.video-card .vc-cover img{width:100%;height:100%;object-fit:cover;display:block;}
.video-card .vc-cover.noimg{background:linear-gradient(135deg,#c9d4dd,#e9edf0);}
/* 无封面视频: 用网站名生成的文字水印(与帖子卡片统一) */
.video-card .vc-cover.ph{display:flex;align-items:center;justify-content:center;padding:10px;
  background:linear-gradient(135deg,#eaf4ff 0%,#f3ecfb 100%);}
.video-card .vc-cover.ph::before{content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 30% 20%,rgba(0,174,236,.10),transparent 60%),
             radial-gradient(circle at 80% 90%,rgba(251,114,153,.12),transparent 60%);}
.video-card .vc-cover.ph .ph-name{position:relative;font-size:20px;font-weight:800;letter-spacing:1px;
  text-align:center;line-height:1.35;max-width:100%;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  background:linear-gradient(135deg,var(--pri),var(--pri2));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--pri);}
.video-card .vc-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:46px;height:46px;border-radius:50%;background:rgba(0,0,0,.45);
  display:flex;align-items:center;justify-content:center;color:#fff;transition:.2s;}
.video-card .vc-play svg{width:22px;height:22px;margin-left:2px;}
.video-card:hover .vc-play{background:var(--pri);}
.video-card .vc-body{padding:10px 12px 12px;}
.video-card .vc-body h3{font-size:15px;line-height:1.4;max-height:2.8em;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.video-card .vc-body .meta{display:flex;justify-content:space-between;align-items:center;
  margin-top:8px;font-size:12px;color:var(--sub);}

.video-detail{max-width:900px;margin:0 auto;}
.vd-player{position:relative;aspect-ratio:16/9;background:#000;border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow);}
.vd-player video{width:100%;height:100%;background:#000;display:block;}
.vd-lock{position:absolute;inset:0;display:flex;flex-direction:column;gap:14px;
  align-items:center;justify-content:center;color:#e6e8ea;background:#1a1c20;text-align:center;padding:20px;}
.vd-lock p{color:#c2c6cc;}
.vd-info{margin-top:14px;}
.vd-info h2{font-size:19px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.video-ad{display:flex;align-items:center;gap:12px;margin-top:14px;padding:12px 14px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  text-decoration:none;color:var(--txt);position:relative;}
.video-ad img{max-height:64px;border-radius:8px;}
.video-ad .video-ad-txt{flex:1;font-size:14px;}
.video-ad .rec-ad{position:static;}
.vd-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;}
.vd-act{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:20px;
  border:1px solid var(--line);background:var(--card2);color:var(--txt);font-size:13px;cursor:pointer;transition:.2s;}
.vd-act b{color:var(--sub);font-weight:600;}
.vd-act:hover{border-color:var(--pri);color:var(--pri);}
.vd-act.on{background:var(--pri);border-color:var(--pri);color:#fff;}
.vd-act.on b{color:#fff;}

/* 分享弹窗 */
.share-box{max-width:420px;}
.share-title{font-size:14px;color:var(--sub);margin-bottom:14px;line-height:1.5;
  word-break:break-all;max-height:3em;overflow:hidden;}
.share-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;}
@media(max-width:480px){.share-grid{grid-template-columns:repeat(4,1fr);}}
.share-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 4px;
  border:1px solid var(--line);border-radius:10px;background:var(--card2);color:var(--txt);
  font-size:12px;cursor:pointer;transition:.2s;text-decoration:none;}
.share-item:hover{border-color:var(--pri);color:var(--pri);transform:translateY(-2px);}
.share-item .si-ic{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;color:#fff;font-size:14px;font-weight:700;}
.share-item.qq .si-ic{background:#12b7f5;}
.share-item.qzone .si-ic{background:#fdbe2c;}
.share-item.wx .si-ic{background:#07c160;}
.share-item.wb .si-ic{background:#e6162d;}
.share-item.copy .si-ic{background:#6c5ce7;}
.share-wx{margin-top:16px;text-align:center;}
.share-wx img{width:200px;height:200px;border-radius:10px;border:1px solid var(--line);}

/* 上传进度条 */
.up-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:3000;display:none;
  align-items:center;justify-content:center;padding:24px;}
.up-mask.show{display:flex;}
.up-card{background:var(--card);border-radius:14px;padding:22px 24px;width:100%;max-width:340px;
  box-shadow:0 10px 40px rgba(0,0,0,.25);}
.up-label{font-size:15px;font-weight:600;color:var(--txt);margin-bottom:14px;}
.up-track{height:10px;border-radius:6px;background:var(--field);overflow:hidden;}
.up-bar{height:100%;width:0;border-radius:6px;transition:width .2s;
  background:linear-gradient(90deg,var(--pri),var(--pri2));}
.up-pct{margin-top:8px;text-align:right;font-size:13px;color:var(--sub);}

/* 友好提示整页(404 / 资源不存在) */
.msg-page{max-width:520px;margin:60px auto;padding:40px 24px;text-align:center;}
.msg-code{font-size:88px;line-height:1;font-weight:800;letter-spacing:2px;
  background:linear-gradient(135deg,var(--pri),var(--pri2));-webkit-background-clip:text;background-clip:text;color:transparent;}
.msg-title{font-size:22px;font-weight:700;color:var(--txt);margin-top:10px;}
.msg-desc{font-size:14px;color:var(--sub);margin-top:10px;line-height:1.7;}
.msg-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:24px;}
@media (max-width:560px){.msg-page{margin:36px auto;padding:28px 16px;}.msg-code{font-size:64px;}}

/* 用户中心钱包(积分/交易币) */
.wallet{display:flex;gap:12px;margin:4px 0 14px;}
.wallet-item{flex:1;text-align:center;padding:14px 8px;border-radius:12px;
  background:linear-gradient(135deg,rgba(251,114,153,.10),rgba(0,174,236,.10));border:1px solid var(--line);}
.wallet-item .wv{font-size:24px;font-weight:800;color:var(--pri);}
.wallet-item .wl{font-size:13px;color:var(--sub);margin-top:2px;}

/* 表单字段(带标题的输入) */
.fld{display:flex;flex-direction:column;gap:4px;flex:1;min-width:130px;}
.fld>span{font-size:12px;color:var(--sub);}
.fld .input,.fld textarea.input{width:100%;box-sizing:border-box;}
.vip-card textarea.input{resize:vertical;font-family:inherit;line-height:1.6;}

/* VIP 权益勾选 */
.vip-rights{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 12px;
  padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--field);}
.vr-item{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--txt);cursor:pointer;}
.vr-item input{width:16px;height:16px;flex:none;accent-color:var(--pri);cursor:pointer;}
@media (max-width:560px){.vip-rights{grid-template-columns:1fr;}}

/* 编辑器-插入视频弹窗 */
.ed-vdlg{max-width:440px;}
.ed-vdlg-or{display:flex;align-items:center;text-align:center;color:var(--sub);font-size:13px;margin:16px 0;}
.ed-vdlg-or::before,.ed-vdlg-or::after{content:"";flex:1;height:1px;background:var(--line);}
.ed-vdlg-or span{padding:0 12px;}

/* ===== 滑块行为验证码 ===== */
.cap-mask{position:fixed;inset:0;background:rgba(0,0,0,.5);display:none;align-items:center;justify-content:center;z-index:3000;}
.cap-mask.show{display:flex;}
.cap-box{background:#fff;border-radius:14px;padding:18px;width:360px;max-width:92vw;box-shadow:0 20px 60px rgba(0,0,0,.25);}
.cap-head{font-weight:700;font-size:15px;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;color:#222;}
.cap-close{cursor:pointer;color:#999;font-size:22px;line-height:1;}
.cap-track{position:relative;height:44px;background:#f1f3f6;border:1px solid #e3e6ea;border-radius:8px;overflow:hidden;user-select:none;}
.cap-fill{position:absolute;left:0;top:0;height:100%;width:0;background:rgba(64,158,255,.18);}
.cap-gap{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:6px;background:repeating-linear-gradient(45deg,#d7dbe0,#d7dbe0 6px,#e9ecf0 6px,#e9ecf0 12px);box-shadow:inset 0 0 0 1px #cfd4da;}
.cap-tip{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:13px;color:#9aa1a9;pointer-events:none;}
.cap-handle{position:absolute;left:0;top:0;height:100%;width:40px;background:#fff;border:1px solid #dfe3e8;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#409eff;cursor:grab;box-shadow:0 2px 8px rgba(0,0,0,.12);transition:box-shadow .15s;}
.cap-handle.active{cursor:grabbing;box-shadow:0 4px 14px rgba(64,158,255,.4);}
.cap-handle.ok{background:#52c41a;border-color:#52c41a;color:#fff;}

/* ===== 首页顶部搜索框 ===== */
.home-search{margin:0 0 16px;}
.hs-inner{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 6px 6px 16px;box-shadow:0 2px 12px rgba(0,0,0,.05);max-width:720px;margin:0 auto;}
.hs-ic{width:20px;height:20px;color:#9aa1a9;flex:none;}
.hs-input{flex:1;border:0;outline:0;background:transparent;font-size:15px;color:var(--text,#222);}
.hs-btn{flex:none;border:0;cursor:pointer;padding:9px 22px;border-radius:999px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(135deg,#ff8bb0,#ff6699);}
.hs-btn:hover{filter:brightness(1.05);}

/* ===== 头像 & 用户下拉菜单 ===== */
.ua{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;overflow:hidden;background:linear-gradient(135deg,#ff9bbf,#7ab8ff);color:#fff;font-weight:700;flex:none;}
.ua img{width:100%;height:100%;object-fit:cover;}
.ua i{display:none;font-style:normal;}
.ua.noimg i{display:block;}
.ua.sm{width:30px;height:30px;font-size:14px;}
.ua.lg{width:46px;height:46px;font-size:20px;}
.user-menu{position:relative;display:inline-flex;vertical-align:middle;}
.nav .user-chip{display:inline-flex;align-items:center;gap:7px;padding:4px 10px 4px 4px;border-radius:999px;cursor:pointer;white-space:nowrap;background:#f5f6f8;border:1px solid var(--line);transition:background .15s;}
.nav .user-chip:hover{background:#eef0f3;}
.uc-name{font-size:14px;font-weight:600;color:var(--text,#333);max-width:110px;overflow:hidden;text-overflow:ellipsis;}
.uc-caret{width:16px;height:16px;color:#9aa1a9;transition:transform .2s;}
.user-menu.open .uc-caret{transform:rotate(180deg);}
.user-drop{position:absolute;top:calc(100% + 10px);right:0;width:240px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 40px rgba(0,0,0,.14);padding:8px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:.16s;z-index:1200;}
.user-menu.open .user-drop{opacity:1;visibility:visible;transform:translateY(0);}
.ud-head{display:flex;align-items:center;gap:12px;padding:10px 10px 12px;}
.ud-meta{min-width:0;}
.ud-name{font-weight:700;font-size:15px;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ud-sub{font-size:12px;color:#9aa1a9;margin-top:2px;}
.ud-wallet{display:flex;gap:8px;padding:0 6px 8px;}
.ud-wallet div{flex:1;background:#f6f7f9;border-radius:10px;padding:8px;text-align:center;}
.ud-wallet b{display:block;font-size:16px;color:#ff6699;}
.ud-wallet span{font-size:11px;color:#9aa1a9;}
.ud-item{display:block;padding:10px 12px;border-radius:8px;font-size:14px;color:#333;text-decoration:none;}
.ud-item:hover{background:#f5f6f8;}
.ud-item.danger{color:#e54d63;}
.ud-item.danger:hover{background:#fdeef0;}
@media(max-width:768px){.user-drop{right:auto;left:0;}}

/* ===== 按钮异步过渡态(发布中/保存中) ===== */
.btn.btn-loading{opacity:.85;cursor:progress;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;}
.btn-spin{display:inline-block;width:15px;height:15px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:btnspin .6s linear infinite;}
.btn.ghost .btn-spin{border-color:rgba(0,0,0,.2);border-top-color:#666;}
@keyframes btnspin{to{transform:rotate(360deg);}}

/* ===== 底部备案信息 ===== */
#siteFooter .footer-main{margin-bottom:6px;}
#siteFooter .footer-beian{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;font-size:12px;}
#siteFooter .footer-beian a,#siteFooter .footer-beian span{color:inherit;opacity:.75;text-decoration:none;}
#siteFooter .footer-beian a:hover{opacity:1;text-decoration:underline;}
