/* ============ 余恋研习 · luoyeye 风整站样式 ============ */
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --brand:#d9772e;--brand-deep:#b75f1e;--green:#5a8f3c;--pink:#e0708a;
  --ink:#33372f;--ink-soft:#6f7763;--line:#ece6d6;--bg:#fcfcfc;--card:#ffffff;
}
html{scroll-behavior:smooth}
body{font-family:"LXGW WenKai","PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.9;padding-top:64px;min-height:100vh;display:flex;flex-direction:column}
/* 内容不足一屏时 footer 钉在视口底部，不留背景空窗 */
body>footer.site{margin-top:auto !important}
a{color:inherit;text-decoration:none}
img{max-width:100%}

/* ---------- 顶部导航（luoyeye 同款白条） ---------- */
.topnav{position:fixed;top:0;left:0;right:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);box-shadow:0 1px 0 rgba(0,0,0,.06)}
.tn-inner{max-width:1280px;margin:0 auto;display:flex;align-items:center;gap:20px;padding:10px 28px}
.logo{display:flex;align-items:center;gap:9px;font-size:19px;font-weight:800;color:#2f4a32;flex:0 0 auto}
.logo img{width:34px;height:34px;border-radius:50%;object-fit:cover;border:2px solid #f0e6d8}
.menu{display:flex;gap:20px;flex:0 0 auto}
.menu a{font-size:15px;color:#4a5a48;padding:4px 2px;border-bottom:2px solid transparent;cursor:pointer}
.menu a:hover{color:var(--brand)}
.menu a.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:700}
.search{margin-left:auto;display:flex;align-items:center;background:#f4f1ea;border-radius:22px;overflow:hidden;border:1px solid #e8e2d4}
.search input{border:none;background:transparent;padding:8px 14px;font-size:13.5px;width:170px;outline:none;font-family:inherit;color:var(--ink)}
.search button{border:none;background:var(--brand);color:#fff;font-size:13px;font-weight:700;padding:8px 15px;cursor:pointer;font-family:inherit}
.search button:hover{background:var(--brand-deep)}
.login-btn{flex:0 0 auto;display:flex;align-items:center;gap:6px;font-size:14.5px;color:#4a5a48;cursor:pointer;padding:6px 10px;border-radius:18px}
.login-btn:hover{background:#f4f1ea;color:var(--brand)}
.login-btn .uava{width:26px;height:26px;border-radius:50%;object-fit:cover;border:1.5px solid #f0e6d8}
@media(max-width:960px){.search input{width:110px}.menu{gap:12px}.tn-inner{gap:10px;padding:10px 14px}}

/* ---------- 快速定位（首页导航下方的 关于/联系） ---------- */
.quicknav{position:fixed;top:70px;right:26px;z-index:40;display:flex;flex-direction:column;gap:10px}
.quicknav a{background:rgba(255,255,255,.92);border:1px solid #e8e2d4;color:#4a5a48;font-size:13.5px;padding:7px 16px;border-radius:20px;box-shadow:0 4px 14px rgba(0,0,0,.08);cursor:pointer;text-align:center}
.quicknav a:hover{color:var(--brand);border-color:var(--brand)}

/* ---------- HERO（背景由 JS 注入的固定壁纸层，整页滚动不动） ---------- */
.hero,.page-hero{position:relative;overflow:hidden;background:transparent;min-height:calc(100vh - 64px);display:flex;align-items:center}
.page-hero{min-height:44vh}
.hero::after,.page-hero::after{display:none}
/* 固定壁纸层（原图直出，无遮罩；支持 ken-burns 缓慢呼吸动效） */
#bg-layer{position:fixed;inset:0;z-index:0;background:#dfeae0 center/cover no-repeat;transition:background-image .9s ease;will-change:transform;animation:kenburns 28s ease-in-out infinite alternate}
@keyframes kenburns{0%{transform:scale(1.06) translate(0,0)}100%{transform:scale(1.15) translate(-1.6%,-1.4%)}}
/* 动态流光层（缓慢流动的彩色光晕，极淡，不挡文字） */
#bg-glow{position:fixed;inset:0;z-index:1;pointer-events:none;background:linear-gradient(120deg,rgba(255,150,90,.10),rgba(110,170,255,.10),rgba(180,120,255,.10),rgba(255,205,120,.10));background-size:300% 300%;animation:glowflow 20s ease-in-out infinite;mix-blend-mode:soft-light}
@keyframes glowflow{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
/* 关闭动态背景（后台可一键关） */
.no-bg-anim #bg-layer{animation:none;transform:none}
.no-bg-anim #bg-glow{display:none}
/* 顶部渐变阅读进度条（蓝→紫→橙→黄） */
#top-progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:60;background:linear-gradient(90deg,#2f7bff,#8b5cf6,#ff8a3d,#ffd23d);transition:width .12s linear}
.hero-inner{position:relative;z-index:5;max-width:1180px;margin:0 auto;padding:40px;width:100%;display:flex;align-items:center;gap:60px}
.hero-left{flex:1;min-width:0}
.hero-left h1{font-size:clamp(2.4rem,5.4vw,4rem);font-weight:400;color:#2f4a32;letter-spacing:1px;line-height:1.25}
.hero-left h1 .heart{color:var(--pink)}
#typed{font-size:clamp(1.3rem,3vw,2rem);color:#3a5a3a;min-height:2.4em;margin:14px 0 6px;font-weight:400}
.typed-cursor{display:none}
.code-line{display:inline-block;font-family:"JetBrains Mono",Consolas,monospace;font-size:clamp(.95rem,1.7vw,1.15rem);color:#4a5344;margin:8px 0 14px;letter-spacing:.2px}
.code-line .tg{color:var(--brand)}
.hero-left .sub{font-size:16.5px;color:#5a6a55;max-width:520px}

/* ---------- 头像（圆形 + 悬停放大 + 点击播放音乐旋转） ---------- */
.hero-right{flex:0 0 280px;text-align:center}
.ava-wrap{position:relative;width:260px;height:260px;margin:0 auto;cursor:pointer;transition:transform .35s ease}
.ava-wrap:hover{transform:scale(1.09)}
.ava{width:260px;height:260px;border-radius:50%;object-fit:cover;display:block;
     box-shadow:0 22px 50px rgba(0,0,0,.22);border:5px solid rgba(255,255,255,.85)}
.ava.spinning{animation:ava-spin 12s linear infinite}
.ava.spinning.paused{animation-play-state:paused}  /* 暂停冻结当前角度，恢复播放从原角度继续 */
@keyframes ava-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.ava-ico{position:absolute;left:50%;top:50%;width:66px;height:66px;border-radius:50%;
     background:rgba(0,0,0,.42);backdrop-filter:blur(4px);color:#fff;font-size:22px;
     display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;
     transform:translate(-50%,-50%) scale(.55);transition:opacity .3s ease,transform .3s ease}
.ava-hint{position:absolute;left:50%;bottom:-6px;transform:translateX(-50%) translateY(6px);
     background:rgba(0,0,0,.5);backdrop-filter:blur(4px);color:#fff;font-size:12px;
     padding:3px 14px;border-radius:14px;opacity:0;pointer-events:none;white-space:nowrap;transition:opacity .3s ease,transform .3s ease}
.ava-wrap:hover .ava-ico{opacity:1;transform:translate(-50%,-50%) scale(1)}
.ava-wrap:hover .ava-hint{opacity:1;transform:translateX(-50%) translateY(0)}
.hero-right .nm{margin-top:16px;font-size:23px;color:#2f4a32;font-weight:700}
.hero-right .rl{font-size:14px;color:#8a8a7a}
@media(max-width:860px){.hero-inner{flex-direction:column-reverse;gap:28px}.hero-right{flex:0 0 auto}.ava-wrap,.ava{width:190px;height:190px}.ava-ico{width:52px;height:52px;font-size:18px}}

/* ---------- 通用区块 ---------- */
section.block{padding:70px 28px;max-width:1080px;margin:0 auto;position:relative;z-index:5}
.eyebrow{font-size:13px;color:var(--brand);letter-spacing:2px}
.title{font-size:30px;color:#2f4a32;margin:6px 0 8px;font-weight:700}
.lead-soft{color:var(--ink-soft);font-size:15.5px;margin-bottom:26px;max-width:720px}
.grid{display:grid;gap:20px}
.cols-2{grid-template-columns:1fr 1fr}
.cols-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:860px){.cols-3,.cols-2{grid-template-columns:1fr}}

/* ---------- 关于 / 联系（背景透明，露出固定壁纸） ---------- */
.about{display:flex;gap:34px;align-items:flex-start;background:rgba(255,255,255,.46);backdrop-filter:blur(9px);border:1px solid rgba(255,255,255,.5);border-radius:22px;padding:36px}
.about .ava2{width:110px;height:110px;border-radius:26px;object-fit:cover;flex:0 0 110px;box-shadow:0 10px 26px rgba(0,0,0,.14);transition:transform .3s ease}
.about .ava2:hover{transform:scale(1.06)}
.about p{font-size:15.5px;color:#5a6a55;margin-bottom:10px}

/* ---------- 项目文章列表（luoyeye 文章页同款） ---------- */
.pl-wrap{position:relative;z-index:5;max-width:1080px;margin:0 auto;padding:46px 28px 60px;width:100%}
.pl-head{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.6);padding-bottom:12px;margin-bottom:26px}
.pl-head h2{font-size:32px;color:#2f4a32;font-weight:700;letter-spacing:2px}
.pl-head .cnt{font-size:13px;background:rgba(255,255,255,.9);border:1px solid #e8e2d4;color:#6f7763;border-radius:16px;padding:4px 14px}
.plist{display:flex;flex-direction:column;gap:22px}
.pcard{display:flex;background:rgba(255,255,255,.96);border-radius:18px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.12);cursor:pointer;transition:transform .22s ease,box-shadow .22s ease}
.pcard:hover{transform:translateY(-5px);box-shadow:0 18px 40px rgba(0,0,0,.18)}
.pcard .cov{flex:0 0 300px;min-height:190px;background:#dfe6da center/cover no-repeat}
.pcard .bd{flex:1;padding:20px 24px;display:flex;flex-direction:column;min-width:0}
.pcard h3{font-size:20px;color:#2f4a32;font-weight:700;margin-bottom:8px}
.pcard .exc{font-size:14px;color:#7a8570;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pcard .meta{margin-top:auto;padding-top:12px;display:flex;align-items:center;gap:14px;font-size:12.5px;color:#9aa18f;flex-wrap:wrap}
.pcard .meta .who{display:flex;align-items:center;gap:6px}
.pcard .meta .who img{width:22px;height:22px;border-radius:50%;object-fit:cover}
.tag{background:#fdf3e8;color:var(--brand);border:1px solid #f3dcc6;border-radius:14px;padding:2px 11px;font-size:12px}
@media(max-width:760px){.pcard{flex-direction:column}.pcard .cov{flex:0 0 auto;height:170px}}

/* ---------- 项目详情（公众号文章感） ---------- */
.article{position:relative;z-index:5;max-width:860px;margin:26px auto 70px;background:rgba(255,255,255,.97);border-radius:20px;padding:44px 50px;box-shadow:0 14px 40px rgba(0,0,0,.14)}
.article h1{font-size:30px;color:#2f4a32;font-weight:700;line-height:1.4}
.article .ameta{display:flex;align-items:center;gap:14px;font-size:13px;color:#9aa18f;margin:14px 0 8px;padding-bottom:18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.article .ameta img{width:26px;height:26px;border-radius:50%;object-fit:cover}
.article .body{margin-top:22px;font-size:16px;color:#43483e}
.article .body p{margin:14px 0}
.article .body h2{font-size:22px;color:#2f4a32;margin:28px 0 10px;padding-left:12px;border-left:4px solid var(--brand)}
.article .body h3{font-size:18px;color:#2f4a32;margin:22px 0 8px}
.article .body img{border-radius:12px;margin:14px auto;display:block;box-shadow:0 8px 24px rgba(0,0,0,.10)}
.article .body video{width:100%;border-radius:12px;margin:14px 0;background:#000}
.article .body audio{width:100%;margin:12px 0}
.article .body blockquote{border-left:4px solid #e3d3b8;background:#faf6ee;padding:12px 18px;border-radius:0 10px 10px 0;color:#7a6a4a;margin:16px 0;font-size:15px}
.article .body a{color:#1678ff;border-bottom:1px dashed #9cc0ff}
.article .body ul,.article .body ol{padding-left:22px;margin:10px 0}
.article .body li{margin:5px 0}
.article .body code{background:#f4f1ea;padding:2px 7px;border-radius:6px;font-family:Consolas,monospace;font-size:14px;color:#b75f1e}
/* 下载项目方框 */
.dl-box{margin-top:34px;border:2px dashed #e3b58a;background:#fdf7ef;border-radius:14px;padding:20px 24px}
.dl-box .dl-t{font-size:17px;font-weight:700;color:var(--brand-deep);display:flex;align-items:center;gap:8px;margin-bottom:10px}
.dl-box .dl-note{font-size:13.5px;color:#8a7a5a;margin-bottom:10px}
.dl-box ul{list-style:none}
.dl-box li{margin:8px 0}
.dl-box li a{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid #f0dcc2;border-radius:10px;padding:9px 16px;color:#4a5a48;font-size:14.5px;transition:.2s}
.dl-box li a:hover{border-color:var(--brand);color:var(--brand);transform:translateX(4px)}
.dl-box li .ico{color:var(--brand)}
.back-line{margin-top:26px}
.back-line a{color:var(--brand);font-size:14.5px}

/* ---------- 服务（bilibili 卡片墙 + 淘宝式价格） ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
@media(max-width:1000px){.svc-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.svc-grid{grid-template-columns:1fr}}
.svc{background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.07);transition:transform .2s ease,box-shadow .2s ease;display:flex;flex-direction:column}
.svc:hover{transform:translateY(-5px);box-shadow:0 14px 32px rgba(0,0,0,.13)}
.svc .cover{height:150px;display:flex;align-items:center;justify-content:center;font-size:44px;color:#fff;position:relative}
.svc .cover .cbadge{position:absolute;top:10px;left:10px;background:rgba(0,0,0,.45);color:#fff;font-size:11.5px;padding:3px 10px;border-radius:12px}
.svc .cover .dur{position:absolute;bottom:10px;right:10px;background:rgba(0,0,0,.55);color:#fff;font-size:11.5px;padding:2px 8px;border-radius:6px}
.c1{background:linear-gradient(135deg,#5a8f3c,#8fbf6a)}
.c2{background:linear-gradient(135deg,#d9772e,#f0b26a)}
.c3{background:linear-gradient(135deg,#3a7ca5,#7ab8d9)}
.c4{background:linear-gradient(135deg,#7b5ea7,#b79ade)}
.c5{background:linear-gradient(135deg,#4a8a7a,#84c3b0)}
.c6{background:linear-gradient(135deg,#c25e5e,#e89a9a)}
.c7{background:linear-gradient(135deg,#b7793a,#e0a860)}
.svc .bd{padding:14px 16px 16px;display:flex;flex-direction:column;flex:1}
.svc h3{font-size:16.5px;color:#2f4a32;font-weight:700;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 服务详情「发货内容」方框 */
.ship-box{margin-top:34px;border:2px dashed #9ab8e3;background:#f3f8ff;border-radius:14px;padding:20px 24px}
.ship-box .dl-t{font-size:17px;font-weight:700;color:#2f6bd0;display:flex;align-items:center;gap:8px;margin-bottom:10px}
.ship-box .dl-note{font-size:13.5px;color:#6a7c93;margin-bottom:10px}
.ship-box ul{list-style:none}
.ship-box li{margin:8px 0}
.ship-box li a{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid #cfe0f5;border-radius:10px;padding:9px 16px;color:#3a5a8a;font-size:14.5px;transition:.2s}
.ship-box li a:hover{border-color:#2f6bd0;color:#2f6bd0;transform:translateX(4px)}
.ship-box li .ico{color:#2f6bd0}
/* ===== 资源原文文本块（项目下载/服务发货通用）：纯文本展示 + 右下角复制按钮 ===== */
.res-text{white-space:pre-wrap;word-break:break-all;background:#fbf7ef;border:1px dashed #d9c9a8;border-radius:12px;padding:14px 96px 14px 16px;font-size:14.5px;line-height:1.9;color:#4a5344;min-height:54px}
.ship-box .res-text{background:#fbfdff;border-color:#b9d0ec;color:#3a5a8a}
.copy-btn{position:absolute;right:10px;bottom:10px;border:1px solid #d8cdb4;background:#fff;border-radius:8px;padding:4px 14px;font-size:12.5px;color:#7a6a45;cursor:pointer;font-family:inherit;transition:.15s}
.copy-btn:hover{background:#f3ecdc}
.copy-btn.done{color:#0a7d32;border-color:#0a7d32}
.buy-bar{margin-top:22px;display:flex;align-items:center;gap:18px;flex-wrap:wrap;border-top:1px dashed var(--line);padding-top:20px}
.buy-bar .bprice{color:var(--brand);font-weight:800;font-size:26px}
.buy-bar .bprice small{font-size:13px;font-weight:400;color:#b09a7a;margin-left:4px}
.buy-bar .bprice .was{font-size:13px;color:#b8b2a4;text-decoration:line-through;font-weight:400;margin-left:6px}
.bbtn{padding:12px 24px;border:none;border-radius:13px;font-weight:700;font-size:15px;cursor:pointer;color:#fff;font-family:inherit}
.bbtn.wx{background:#1aad19}
.bbtn.ali{background:#1678ff}
.bbtn:hover{filter:brightness(1.07)}
.svc .desc{font-size:13px;color:#8a937f;margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.svc .foot{margin-top:auto;padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.svc .price{color:#d9772e;font-weight:800;font-size:19px}
.svc .price small{font-size:12px;font-weight:400;color:#b09a7a}
.svc .price .was{font-size:12px;color:#b8b2a4;text-decoration:line-through;font-weight:400;margin-left:6px}
.buy-btn{background:linear-gradient(90deg,#ff7e2e,#ff5e00);color:#fff;border:none;padding:8px 18px;border-radius:18px;font-weight:700;font-size:13px;cursor:pointer;font-family:inherit}
.svc .buy-hint{font-size:13px;color:#b07a2a;font-weight:600;white-space:nowrap}
.buy-btn:hover{filter:brightness(1.08)}
.sold{font-size:12px;color:#b8b2a4}

/* ---------- 时间线 ---------- */
.tline{position:relative;max-width:720px;margin:0 auto;padding-left:30px}
.tline::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:2px;background:#e8dfc8}
.titem{position:relative;padding:0 0 30px 22px}
.titem::before{content:"";position:absolute;left:-28px;top:8px;width:12px;height:12px;border-radius:50%;background:var(--brand);border:3px solid #fdf3e8}
.titem .td{font-size:13px;color:var(--brand);font-weight:700}
.titem h3{font-size:17.5px;color:#2f4a32;margin:3px 0 4px}
.titem p{font-size:14px;color:#7a8570}

/* ---------- 更新日志 / 祈福墙 ---------- */
.logv{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 24px;margin-bottom:16px}
.logv .v{font-size:16px;font-weight:700;color:var(--brand-deep)}
.logv .d{font-size:12.5px;color:#9aa18f;margin-left:10px}
.logv ul{padding-left:20px;margin-top:8px}
.logv li{font-size:14px;color:#5a6a55;margin:4px 0}
.wish-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:860px){.wish-grid{grid-template-columns:1fr}}
.wish{border-radius:4px 4px 18px 4px;padding:20px;color:#fff;box-shadow:0 8px 20px rgba(0,0,0,.12);transform:rotate(-.6deg)}
.wish:nth-child(even){transform:rotate(.8deg)}
.wish .w-t{font-size:16.5px;font-weight:700;margin-bottom:6px}
.wish .w-b{font-size:13.5px;opacity:.92}
.wish .w-n{text-align:right;font-size:12.5px;margin-top:10px;opacity:.8}
.wg1{background:linear-gradient(135deg,#d9772e,#e89a5a)}
.wg2{background:linear-gradient(135deg,#5a8f3c,#7fae5c)}
.wg3{background:linear-gradient(135deg,#c25e7e,#dd8aa4)}
.wg4{background:linear-gradient(135deg,#3a7ca5,#6aa6c8)}
.wg5{background:linear-gradient(135deg,#7b5ea7,#9d7fca)}
.wg6{background:linear-gradient(135deg,#b7793a,#d09a5e)}

/* ---------- 弹层（登录 / 下单） ---------- */
.modal{display:none;position:fixed;inset:0;z-index:99;background:rgba(0,0,0,.5);align-items:center;justify-content:center;padding:20px}
.modal-box{background:#fff;border-radius:16px;max-width:440px;width:100%;padding:30px;position:relative;max-height:92vh;overflow:auto}
.modal-x{position:absolute;top:12px;right:16px;border:none;background:none;font-size:26px;cursor:pointer;color:#999}
.modal-box h3{font-size:21px;color:#2f4a32;margin-bottom:4px}
.modal-box .sub{font-size:13px;color:#9aa18f;margin-bottom:18px}
.fld{margin-bottom:14px}
.fld label{display:block;font-size:13px;color:#6f7763;margin-bottom:5px}
.fld .row{display:flex;gap:10px}
.fld input{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:14.5px;font-family:inherit;outline:none}
.fld input:focus{border-color:var(--brand)}
.code-btn{flex:0 0 auto;border:none;background:#f4f1ea;color:var(--brand-deep);font-weight:700;font-size:13px;padding:0 16px;border-radius:10px;cursor:pointer;font-family:inherit;white-space:nowrap}
.code-btn:disabled{color:#b8b2a4;cursor:not-allowed}
.pri-btn{width:100%;padding:13px;border:none;border-radius:12px;background:var(--brand);color:#fff;font-weight:700;font-size:15.5px;cursor:pointer;font-family:inherit}
.pri-btn:hover{background:var(--brand-deep)}
.pri-btn:disabled{background:#d8cfc0;cursor:not-allowed}
.lg-tip{font-size:12.5px;color:#9aa18f;margin-top:12px;line-height:1.7}

/* ---------- 下单弹层内（沿用现有站点结构） ---------- */
.m-price{color:var(--brand);font-weight:800;font-size:20px;margin-bottom:12px}
.m-sec{font-size:13px;font-weight:700;color:var(--green);letter-spacing:1px;margin:14px 0 6px}
#modal-body ul{padding-left:18px;color:#5a6a55;font-size:14px}
#modal-body ul li{margin:5px 0}
.buy-row{display:flex;align-items:center;gap:12px;margin:12px 0 4px;flex-wrap:wrap}
.amount-fixed{font-size:15px;color:var(--ink);font-weight:700}
.amount-fixed b{color:var(--brand);font-size:20px;margin-left:3px}
#buy-btn,#ali-btn{width:auto;padding:13px 22px;font-size:15px;border-radius:12px;border:none;cursor:pointer;font-weight:700;color:#fff}
#buy-btn{background:var(--green)}
#ali-btn{background:#1678ff}
.buy-tip{font-size:12.5px;color:var(--ink-soft);margin-top:10px}
.qr-wrap{text-align:center;margin-top:14px}
#qr-img{display:inline-block;padding:10px;background:#fff;border:1px solid var(--line);border-radius:10px}
.qr-tip{font-size:13px;color:var(--ink-soft);margin:8px 0 0}
.qr-ok{color:#1d7a3e;font-weight:700}
.wx-link{margin-top:16px;border-top:1px dashed var(--line);padding-top:14px}
.copy-box{display:flex;gap:8px}
.copy-box input{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:12px;color:var(--ink-soft)}
.copy-box button{padding:8px 14px;border:none;border-radius:8px;background:var(--brand);color:#fff;font-weight:600;font-size:13px;cursor:pointer;white-space:nowrap}
.wx-open{display:inline-block;margin-top:10px;color:#1678ff;font-weight:700}

/* ---------- 页脚（备案信息，全站写死） ---------- */
footer.site{position:relative;z-index:5;border-top:1px solid var(--line);padding:34px 28px;color:#9aa18f;font-size:13px;background:#faf8f2;margin-top:40px}
footer.site .wrap{max-width:1080px;margin:0 auto}
footer.site .cols{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;line-height:2.1}
footer.site .brand{font-size:18px;font-weight:800;color:#2f4a32}
footer.site .brand .dot{color:var(--brand)}
footer.site .fnote{margin:8px 0 0;color:#9c938a;max-width:360px}
footer.site a{margin-right:12px;color:#7a8570}
footer.site a:hover{color:var(--brand)}
footer.site .beian{margin-top:16px;padding-top:14px;border-top:1px solid #e3dccb;color:#8a8a7a;line-height:2}
footer.site .beian b{color:#5a6a55}
footer.site .copy{margin-top:12px;color:#aab0a0}

/* ---------- 时间页 · 时光机 v2（大时钟 + 橙色运行卡 + 长进度条） ---------- */
.machine{background:rgba(255,255,255,.45);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.6);border-radius:22px;padding:24px 26px;margin-bottom:34px}
.m-top{display:grid;grid-template-columns:1fr 320px;gap:16px}
@media(max-width:860px){.m-top{grid-template-columns:1fr}}
.m-clock-card{background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.7);border-radius:18px;padding:22px 30px}
.m-clock-card .cdate{color:#6f7763;font-size:14.5px;margin-bottom:0}
.m-clock-card .clock{font-size:clamp(54px,8.5vw,84px);color:#22301f;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:3px;line-height:1.2;margin:2px 0}
.m-clock-card .m-day{font-size:14px;color:#8a937f;margin-top:4px}
.m-run-card{background:linear-gradient(135deg,#ff9a3d,#ff5e00);border-radius:18px;padding:20px 26px;color:#fff;display:flex;flex-direction:column;justify-content:center;box-shadow:0 14px 34px rgba(255,94,0,.28)}
.m-run-card .g-t{color:rgba(255,255,255,.94);font-size:13.5px}
.m-run-card .run-big{font-size:44px;font-weight:800;line-height:1.25}
.m-run-card .run-big small{font-size:17px;font-weight:400;margin-left:5px;opacity:.92}
.m-run-card .run-time{font-size:25px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:2px;opacity:.95}
.m-year-long{background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.7);border-radius:18px;padding:18px 26px 20px;margin-top:16px}
.m-year-long .yl-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.m-year-long .yl-title{font-size:17px;font-weight:800;color:#2f4a32}
.m-year-long .yl-head b{font-size:24px;font-weight:800;color:#ff5e00;font-variant-numeric:tabular-nums}
.m-year-long .yl-sub{font-size:12.5px;color:#9aa18f;margin:4px 0 10px}
.gauges{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.gauges.three{grid-template-columns:repeat(3,1fr);margin-top:16px}
@media(max-width:860px){.gauges{grid-template-columns:1fr 1fr}.gauges.three{grid-template-columns:1fr}}
.gauge{background:rgba(255,255,255,.72);border-radius:16px;padding:16px 18px;border:1px solid rgba(255,255,255,.6)}
.gauge .g-t{font-size:13px;color:#8a937f}
.gauge .g-n{font-size:24px;font-weight:800;color:#2f4a32;margin:2px 0}
.gauge .g-n small{font-size:13px;color:#b09a7a;font-weight:400}
.gbar{height:9px;border-radius:6px;background:#ece6d6;overflow:hidden;margin-top:8px}
.gbar.long{height:14px;border-radius:8px}
.gbar > i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#5a8f3c,#d9772e);transition:width .4s ease}
.gbar > i.g-orange{background:linear-gradient(90deg,#ffb347,#ff5e00)}
.gbar > i.g-blue{background:linear-gradient(90deg,#4a90d9,#8b5cf6)}
.gbar > i.g-pink{background:linear-gradient(90deg,#e0708a,#c25e7e)}
.gbar > i.g-green{background:linear-gradient(90deg,#8fbf6a,#3f9142)}
.gauge .g-sub{font-size:12px;color:#9aa18f;margin-top:6px}

/* ---------- 时间页 · 日志（后台操作自动生成） ---------- */
.ops{background:rgba(255,255,255,.55);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);border:1px solid rgba(255,255,255,.6);border-radius:18px;padding:30px 34px 14px;margin-bottom:40px;color:#1c2318}
.ops .titem p{white-space:pre-wrap;color:#1c2318}
.ops .titem .td{color:#1c2318}
.ops .titem h3{color:#111}
.ops-empty{font-size:14px;color:#555b4e;padding:8px 0 22px;font-weight:600}

/* ---------- 更新日志 · Releases（复刻 luoyeye） ---------- */
.release{background:rgba(255,255,255,.96);border-radius:18px;padding:30px 34px;margin-bottom:22px;box-shadow:0 10px 30px rgba(0,0,0,.10);position:relative}
.release .r-head{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:18px}
.release .r-ver{font-size:20px;font-weight:800;color:var(--brand-deep)}
.release .r-date{font-size:13.5px;color:#9aa18f}
.release .r-latest{margin-left:auto;font-size:12px;background:var(--brand);color:#fff;padding:3px 12px;border-radius:14px}
.release h2{font-size:24px;color:#2f4a32;font-weight:700;margin:0 0 12px}
.release .r-body{font-size:15.5px;color:#43483e}
.release .r-body p{margin:12px 0}
.release .r-body h3{font-size:18px;color:#2f4a32;margin:22px 0 8px}
.release .r-body ul{list-style:none;padding:0}
.release .r-body li{margin:9px 0;padding-left:24px;position:relative;color:#5a6a55}
.release .r-body li::before{content:"✦";position:absolute;left:0;color:var(--brand)}
.release .r-body blockquote{border-left:4px solid #e3d3b8;background:#faf6ee;padding:12px 18px;border-radius:0 10px 10px 0;color:#7a6a4a;margin:16px 0;font-size:14.5px}
.release .r-div{height:1px;background:#eee;margin:18px 0}

/* ---------- 首页专属 · 玻璃光影（仿 windydream，仅 body.home 生效，不改页面结构） ---------- */
.home .topnav{background:rgba(255,255,255,.38);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);box-shadow:none;border-bottom:1px solid rgba(255,255,255,.35);transition:background .35s ease,box-shadow .35s ease}
.home .topnav:hover{background:rgba(255,255,255,.78);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);box-shadow:0 6px 24px rgba(0,0,0,.10)}
.home .menu a{padding:6px 14px;border-radius:16px;border-bottom:none;transition:background .25s ease,box-shadow .25s ease}
.home .menu a:hover{background:rgba(255,255,255,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 4px 14px rgba(0,0,0,.08)}
.home .menu a.active{background:rgba(255,255,255,.6)}
.home .search{background:rgba(255,255,255,.45);border-color:rgba(255,255,255,.6)}
.home .quicknav a{background:rgba(255,255,255,.45);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-color:rgba(255,255,255,.6)}
/* 卡片像窗户：通透毛玻璃，透出固定壁纸 */
.home .about{background:rgba(255,255,255,.30);backdrop-filter:blur(16px) saturate(1.35);-webkit-backdrop-filter:blur(16px) saturate(1.35);border:1px solid rgba(255,255,255,.55);box-shadow:0 12px 36px rgba(0,0,0,.10)}

/* ---------- 项目页 · 资源速查表（左侧抽屉：宽屏占左侧空白，窄屏浮层遮盖，永不挤压项目） ---------- */
.pl-layout{position:relative}
.pl-main{width:100%}
.pl-side{position:fixed;left:16px;top:90px;bottom:90px;width:430px;z-index:44;display:flex;flex-direction:column;
     background:rgba(255,255,255,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
     border:1px solid rgba(255,255,255,.65);border-radius:16px;padding:16px 14px;box-shadow:0 14px 40px rgba(0,0,0,.18);
     transform:translateX(-120%);transition:transform .32s ease}
.pl-side.open{transform:none}
.pl-side.resizing{transition:none}
.pl-side.resizing *{user-select:none;pointer-events:none}
/* 右边缘拖拽把手：悬停出现双箭头光标，拖动可调宽 */
.side-resize{position:absolute;top:0;right:-5px;width:10px;height:100%;cursor:col-resize;z-index:2}
.side-resize::after{content:"";position:absolute;top:50%;right:2px;transform:translateY(-50%);
     width:4px;height:56px;border-radius:4px;background:rgba(217,119,46,.0);transition:background .2s ease}
.side-resize:hover::after{background:rgba(217,119,46,.55)}
/* 显示/隐藏按钮（贴左边缘，竖排文字） */
.side-toggle{position:fixed;left:0;top:50%;transform:translateY(-50%);z-index:45;
     writing-mode:vertical-rl;letter-spacing:3px;
     border:1px solid rgba(255,255,255,.7);border-left:none;border-radius:0 14px 14px 0;
     background:rgba(255,255,255,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
     color:#2f4a32;font-size:13px;font-weight:800;padding:16px 7px;cursor:pointer;
     box-shadow:4px 6px 18px rgba(0,0,0,.14);font-family:inherit;transition:color .2s ease}
.side-toggle:hover{color:var(--brand)}
.pl-side .side-title{font-size:16px;font-weight:800;color:#2f4a32;margin-bottom:2px}
.pl-side .side-note{font-size:12px;color:#9aa18f;margin-bottom:10px}
.pl-side .side-scroll{flex:1;min-height:0;overflow:auto}
.res-table{width:100%;border-collapse:collapse;font-size:13px}
.res-table th{text-align:left;font-size:12.5px;color:#8a937f;font-weight:700;padding:6px 6px;border-bottom:2px solid #ece6d6;white-space:nowrap}
.res-table td{padding:9px 6px;border-bottom:1px solid #f2efe6;vertical-align:top}
.res-table .rs-name{color:#2f4a32;font-weight:700;line-height:1.5;min-width:110px}
.res-table .rs-date{font-size:11.5px;color:#b8b2a4;font-weight:400;margin-top:2px}
.res-table .rs-res{color:#5a6a55;line-height:1.7;word-break:break-all}
.res-table .rs-res a{color:#1678ff;border-bottom:1px dashed #9cc0ff}
.res-table .rs-res a:hover{color:#0b5ed7}
.res-table .rs-act{white-space:nowrap}
.side-go{display:inline-block;background:linear-gradient(90deg,#ff9a3d,#ff5e00);color:#fff;border-radius:12px;padding:4px 11px;font-size:12px;font-weight:700;transition:transform .2s ease}
.side-go:hover{transform:translateY(-2px)}

/* ---------- 项目页 · 分页器（每页30条） ---------- */
.pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:28px;flex-wrap:wrap}
.pg-btn{border:1px solid rgba(255,255,255,.7);background:rgba(255,255,255,.9);color:#4a5a48;font-size:13.5px;font-weight:700;padding:8px 18px;border-radius:18px;cursor:pointer;font-family:inherit;transition:.2s}
.pg-btn:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}
.pg-btn:disabled{opacity:.45;cursor:not-allowed}
.pg-info{font-size:13.5px;color:#5a6a55;background:rgba(255,255,255,.85);padding:7px 16px;border-radius:18px}
.pg-info b{color:var(--brand)}
.pg-jump{display:flex;align-items:center;gap:8px;font-size:13.5px;color:#5a6a55}
.pg-jump input{width:58px;padding:7px 8px;border:1px solid #e8e2d4;border-radius:10px;font-size:13px;font-family:inherit;text-align:center;outline:none;background:rgba(255,255,255,.9)}
.pg-jump input:focus{border-color:var(--brand)}
.pg-go{padding:8px 14px}

/* ---------- 全站 · 标题防背景融合（极细反色描边 + 白色柔光，保持字体清晰） ---------- */
.eyebrow,.title,.pl-head h2,.hero-left h1,#typed,.machine .greet{
  text-shadow:0 1px 2px rgba(255,255,255,.95),0 0 10px rgba(255,255,255,.85),0 0 22px rgba(255,255,255,.55);
  -webkit-text-stroke:.35px rgba(255,255,255,.8);
  paint-order:stroke fill;
}

/* ---------- 首页 · 文字整体加大加粗、正文改黑 ---------- */
.home .hero-left h1{font-weight:800;color:#161a13}
.home .hero-right .nm{color:#161a13}
.home #typed{font-size:clamp(1.5rem,3.4vw,2.4rem);color:#111;font-weight:800}
.home .code-line{font-size:clamp(1.05rem,2vw,1.35rem);color:#111;font-weight:600}
.home .code-line .tg{font-weight:800}
.home .hero-left .sub{font-size:18.5px;color:#111;font-weight:600;max-width:560px}
.home .eyebrow{font-size:15px;font-weight:800}
.home .title{font-size:34px;font-weight:800;color:#1c2318}
.home .lead-soft{color:#111;font-size:17px;font-weight:600}
.home .about p{color:#111;font-size:17px;font-weight:600}
.home .about p b{font-size:18px}
.home .about .fnote{color:#111}
.home .hero-right .nm{font-size:25px}
.home .hero-right .rl{font-size:15px;color:#111;font-weight:600}

/* ================= 文章视频封面裁切卡 + 灯箱播放（前台） ================= */
.body .vcrop{position:relative;max-width:640px;margin:14px auto;overflow:hidden;border-radius:10px;background:#000;cursor:pointer;box-shadow:0 6px 20px rgba(0,0,0,.14)}
.body .vcrop video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;margin:0}
.body .vcrop.nocrop video{height:auto;object-fit:contain;margin:0}
.body .vcrop .vplay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:58px;height:58px;border-radius:50%;
  background:rgba(0,0,0,.55);color:#fff;font-size:0;display:flex;align-items:center;justify-content:center;pointer-events:none;
  box-shadow:0 4px 14px rgba(0,0,0,.35)}
/* 播放三角用 CSS border 画（字体 ▶ 字形各环境宽扁不一，会被压扁） */
.body .vcrop .vplay::before{content:'';display:block;width:0;height:0;margin-left:5px;
  border-left:17px solid #fff;border-top:11px solid transparent;border-bottom:11px solid transparent}
.body .vcrop:hover .vplay{background:rgba(217,119,46,.85)}
.vbox{position:fixed;inset:0;background:rgba(0,0,0,.84);z-index:999;display:flex;align-items:center;justify-content:center}
.vbox-in{display:flex;flex-direction:column;gap:10px;align-items:center}
.vbox video{max-width:92vw;max-height:78vh;border-radius:8px;background:#000}
.vbox-bar{display:flex;gap:10px}
.vbox-bar button{border:none;border-radius:8px;padding:8px 18px;font-size:14px;cursor:pointer;background:#fff;color:#333}
.vbox-bar button:hover{background:#f0ead8}


/* ===== 头像音乐面板(自动注入) ===== */
.ava-panel{position:absolute;left:50%;top:100%;transform:translateX(-50%) translateY(6px);
  width:min(320px,86vw);margin-top:14px;background:rgba(20,24,20,.84);backdrop-filter:blur(8px);
  border-radius:16px;padding:12px 14px;color:#fff;opacity:0;visibility:hidden;pointer-events:none;
  /* 隐藏延迟 .4s：鼠标短暂滑出头像/面板不至于立刻消失，再滑回来无缝续用 */
  transition:opacity .25s ease .4s,transform .25s ease .4s,visibility 0s linear .65s;z-index:40;box-shadow:0 16px 42px rgba(0,0,0,.32)}
/* 悬停桥接：补住头像与面板之间的 14px 空隙并外扩 4px，鼠标移向面板不再中途消失 */
.ava-panel::before{content:'';position:absolute;left:-12px;right:-12px;top:-18px;height:18px}
.ava-wrap:hover .ava-panel,.music-ctrl:hover .ava-panel{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);transition-delay:0s}
.ava-panel .ap-row{display:flex;align-items:center;gap:8px;font-size:12px}
.ava-panel .ap-time{flex:0 0 auto;opacity:.85;font-variant-numeric:tabular-nums}
.ava-progress{flex:1;height:7px;border-radius:7px;background:rgba(255,255,255,.2);position:relative;cursor:pointer;overflow:hidden}
.ava-progress-fill{position:absolute;left:0;top:0;bottom:0;width:0;background:linear-gradient(90deg,#a7e0b6,#5fb37a);border-radius:7px;transition:width .15s linear}
.ava-ctrls{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:11px}
.ava-ctrls button{background:transparent;border:0;color:#fff;font-size:18px;cursor:pointer;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s}
.ava-ctrls button:hover{background:rgba(255,255,255,.16)}
.ava-name{flex:1;text-align:center;font-size:13px;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 非首页浮动音乐控制器（保证切页也能控制/续播） */
.music-fab{position:fixed;right:20px;bottom:20px;width:66px;height:66px;z-index:90;cursor:pointer;border-radius:50%;
  background:rgba(255,255,255,.92);box-shadow:0 12px 32px rgba(0,0,0,.3);transition:transform .3s ease}
.music-fab:hover{transform:scale(1.08)}
.music-fab .ava{width:66px;height:66px;border:3px solid #fff;box-shadow:0 8px 20px rgba(0,0,0,.18)}
.music-fab .ava-ico{width:30px;height:30px;font-size:13px;opacity:.92;transform:translate(-50%,-50%) scale(1)}
.music-fab .ava-hint{display:none}
.music-fab .ava-panel{top:auto;bottom:100%;margin-top:0;margin-bottom:14px}
.music-fab .ava-panel::after{content:'';position:absolute;left:-12px;right:-12px;bottom:-14px;height:14px}
.music-fab:hover .ava-panel{transform:translateX(-50%) translateY(0);transition-delay:0s}

/* ===== 服务详情正文：camp 陪跑营图文排版（2026-10-03） ===== */
.article .body .media-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:18px 0}
.article .body .media-grid figure{margin:0}
.article .body figure{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 6px 18px rgba(0,0,0,.06);display:flex;flex-direction:column}
.article .body figure img{width:100%;height:auto;display:block;border-radius:0;margin:0;box-shadow:none}
.article .body figcaption{font-size:13px;color:#8a8f80;padding:9px 12px;text-align:center;line-height:1.5;background:#faf8f3;border-top:1px solid #f0ece4}
.article .body .media-wide{margin:18px 0}
.article .body .media-wide img{width:100%;max-height:440px;object-fit:cover;border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.10);display:block}
.article .body .media-video{max-width:620px;margin:18px auto}
.article .body .media-video video{width:100%;border-radius:14px;display:block;background:#000;box-shadow:0 8px 24px rgba(0,0,0,.12)}
.article .body .cmp{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
.article .body .cmp figure{margin:0}
.article .body .day-tip{background:#f3f8f1;border-left:4px solid var(--brand);border-radius:0 10px 10px 0;padding:12px 16px;margin:16px 0;font-size:15px;color:#4a5a44}
@media(max-width:680px){.article .body .media-grid,.article .body .cmp{grid-template-columns:1fr}}

/* ===== 2026-10-03 二次重排：方形缩略图 + 点击看原图(灯箱) + 放大字体 ===== */
.article .body{font-size:17.5px;line-height:1.85;color:#3c4136}
.article .body p{margin:15px 0}
.article .body h2{font-size:23px}
.article .body h3{font-size:19px}
.article .body figcaption{font-size:13.5px}
.article .body .day-tip{font-size:15.5px}
.article .body .media-grid{grid-template-columns:repeat(3,1fr);gap:12px}
.article .body .media-grid img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:0;margin:0;box-shadow:none;cursor:zoom-in;transition:transform .2s}
.article .body .media-grid figure:hover img{transform:scale(1.04)}
.article .body .media-wide img{width:100%;max-height:380px;object-fit:cover;border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.10);cursor:zoom-in}
.article .body .cmp img{width:100%;aspect-ratio:1/1;object-fit:cover;cursor:zoom-in}
.article .body .media-video{max-width:520px;margin:18px auto}
.article .body .vbox2{position:relative;aspect-ratio:1/1;overflow:hidden;border-radius:14px;cursor:zoom-in;box-shadow:0 8px 24px rgba(0,0,0,.12)}
.article .body .vbox2 video{width:100%;height:100%;object-fit:cover;display:block;background:#000}
.article .body .vbox2 .vplay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:56px;height:56px;border-radius:50%;background:rgba(217,119,46,.92);color:#fff;display:flex;align-items:center;justify-content:center;font-size:0;box-shadow:0 6px 20px rgba(0,0,0,.35)}
/* 播放三角用 CSS border 画（字体 ▶ 字形各环境宽扁不一，会被压扁） */
.article .body .vbox2 .vplay::before{content:'';display:block;width:0;height:0;margin-left:5px;
  border-left:16px solid #fff;border-top:10px solid transparent;border-bottom:10px solid transparent}
@media(max-width:680px){.article .body .media-grid{grid-template-columns:repeat(2,1fr)}}
/* ===== 图文排版微调（2026-10-15）：宽图悬停微放大、裁切窗口平滑、间距更舒展 ===== */
.article .body .media-wide img{transition:transform .25s ease}
.article .body .media-wide figure:hover img{transform:scale(1.012)}
.article .body .media-video{margin:22px auto}
.article .body .media-wide{margin:20px 0}
/* 灯箱 */
.lb{position:fixed;inset:0;background:rgba(0,0,0,.86);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;cursor:zoom-out}
.lb.show{display:flex}
.lb img{max-width:94vw;max-height:90vh;border-radius:8px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.lb video{max-width:94vw;max-height:90vh;border-radius:8px;background:#000}
.lb:after{content:"\2715 \70b9\51fb\7a7a\767d\5904\5173\95ed";position:absolute;top:18px;right:22px;color:#fff;font-size:14px;opacity:.85}

/* ===== 图片网格列数变体（2026-10-10 编辑器网格组件：两列/三列/四列，四宫格=2列4张、九宫格=3列9张） ===== */
.article .body .media-grid.g2{grid-template-columns:repeat(2,1fr)}
.article .body .media-grid.g3{grid-template-columns:repeat(3,1fr)}
.article .body .media-grid.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:640px){
  .article .body .media-grid.g3,.article .body .media-grid.g4{grid-template-columns:repeat(2,1fr)}
}

/* ===== 首页联系区二维码卡（20261010b） ===== */
.qr-img{width:150px;height:150px;object-fit:contain;background:#fff;padding:6px;border-radius:12px;box-shadow:0 4px 16px rgba(20,60,120,.14);cursor:zoom-out;transition:transform .18s ease}
.qr-img:hover{transform:scale(1.04)}
@media(max-width:640px){.qr-img{width:118px;height:118px}}

/* ===== 头像音乐面板：播放中也显示（触屏可操作），20261012a ===== */
/* 播放中面板跟随悬停显隐（移开 0.4s 后淡出）；触屏无 hover，播放时保持常显 */
@media (hover:none){.ava-wrap.playing .ava-panel{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);transition-delay:0s}}
.ava-panel{will-change:opacity,transform}

/* ===== 前台：显示裁切窗口（后台拖手柄裁出来的，响应式等比，原图完整保留）20261015b ===== */
.cropwin{display:block;position:relative;overflow:hidden;max-width:100%;border-radius:8px;margin:14px auto}
.cropwin>img{position:absolute;max-width:none;max-height:none;height:auto;margin:0;border-radius:0;display:block;aspect-ratio:auto;object-fit:fill}
.media-grid .cropwin,.media-wide .cropwin{width:100%;margin:0}
