/* ========== 跃然纸上 - 石桥古法造纸数字导览系统 ========== */
:root {
    --bg: #f8f4ef;
    --bg-warm: #f5ede4;
    --bg-dark: #1f1208;
    --ink: #2c1810;
    --accent: #c8553d;
    --accent2: #d4a574;
    --accent3: #8d6e4c;
    --text: #3a2a1a;
    --text-light: #8a7a6a;
    --text-muted: #b0a090;
    --border: #e0d5c8;
    --card: #fdfaf4;
    --paper: #fdfaf4;          /* 微暖纸色（卡片底） */
    --paper-aged: #f3ebde;     /* 陈纸色 */
    --paper-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
    --paper-fiber: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cg stroke='%23c8553d' stroke-opacity='0.05' stroke-width='0.6'%3E%3Cpath d='M10 40 Q60 30 120 50 T200 35'/%3E%3Cpath d='M0 90 Q70 80 140 100 T200 85'/%3E%3Cpath d='M20 150 Q80 140 150 160'/%3E%3C/g%3E%3Cg stroke='%23d4a574' stroke-opacity='0.06' stroke-width='0.5'%3E%3Cpath d='M0 20 Q90 10 180 25'/%3E%3Cpath d='M10 120 Q100 110 190 130'/%3E%3C/g%3E%3C/svg%3E");
    /* 极淡竹帘暗纹（6×36px 平铺，单根 0.5px 浅褐线模拟细密竹条） */
    --bamboo-weave: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='36'%3E%3Cg stroke='%23a89070' stroke-opacity='0.07' stroke-width='0.5' fill='none'%3E%3Cline x1='3' y1='0' x2='3' y2='36'/%3E%3C/g%3E%3C/svg%3E");
    /* 中式祥云切角 mask（右上 + 左下 各挖一个小云朵缺口；100x100 viewBox 拉伸填充） */
    --mask-cloud-corner: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M0 0H100V100H0Z' fill='%23fff'/%3E%3Cg fill='%23000'%3E%3Cpath d='M82 0q8 6 4 14t-12 4t-4-12t12-6zM0 82q6 8 14 4t4-12t-12-4t-6 12z'/%3E%3C/g%3E%3C/svg%3E");
    --shadow: rgba(44,24,16,0.10);
    --shadow-md: rgba(44,24,16,0.16);
    --shadow-lg: rgba(44,24,16,0.24);
    --serif: 'Noto Serif SC', 'ZCOOL XiaoWei', serif;
    --sans: 'Noto Sans SC', sans-serif;
    --page-transition: 0.26s cubic-bezier(0.4, 0, 0.2, 1);

    /* 字号梯度（8 级 rem 阶梯） */
    --fs-display: clamp(3rem, 8vw, 5.5rem);
    --fs-h1: clamp(2rem, 5vw, 2.8rem);
    --fs-h2: 1.6rem;
    --fs-h3: 1.3rem;
    --fs-h4: 1.1rem;
    --fs-body: 1rem;
    --fs-sm: 0.875rem;
    --fs-xs: 0.75rem;

    /* 间距系统（8 点网格） */
    --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px;
    --sp-5: 24px; --sp-6: 32px; --sp-7: 48px; --sp-8: 64px; --sp-9: 96px;

    /* 行距 */
    --lh-tight: 1.3;
    --lh-normal: 1.75;
    --lh-loose: 1.9;

    /* 圆角 */
    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 16px;

    /* 卡片统一 */
    --card-pad: 28px;
    --card-shadow: 0 6px 24px var(--shadow), 0 1px 2px rgba(44,24,16,0.06);
    --card-shadow-hover: 0 16px 48px var(--shadow-md), 0 2px 4px rgba(44,24,16,0.08);
    --card-hover-y: -4px;

    /* 字距 */
    --ls-tight: 0.06em;
    --ls-normal: 0.02em;
    --ls-wide: 0.2em;

    /* ===== 重构新增：左栏 / 磨砂 / 印色 / 版权条 ===== */
    --rail-w: 66px;                        /* 左侧导航收缩宽 */
    --rail-w-open: 214px;                  /* hover 展开宽 */
    --seal: #b8442e;                       /* 朱砂印色 */
    --seal-soft: rgba(200,85,61,.10);      /* 朱砂宣纸高亮底 */
    --seal-line: rgba(200,85,61,.42);      /* 朱砂细描边 */
    --frost: rgba(248,244,239,.78);        /* 宣纸磨砂底 */
    --frost-deep: rgba(243,235,222,.86);
    --frost-blur: 16px;
    --hairline: rgba(44,24,16,.08);        /* 极细分割线，替代硬边框 */
    --copybar-h: 30px;                     /* 底部版权条高度（单行） */
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;overflow:hidden;height:100%}
body{font-family:var(--sans);color:var(--text);background:var(--bg);line-height:var(--lh-normal);overflow:hidden;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
/* 全局细微纸面颗粒：悬浮于所有内容之上，不抢视觉 */
body::before{content:'';position:fixed;inset:0;z-index:1;pointer-events:none;background-image:var(--paper-grain);background-size:160px 160px;opacity:0.05}
::selection{background:var(--accent);color:#fff}
img{max-width:100%;display:block}
a{text-decoration:none;color:inherit}

/* 全局标题与正文规范 */
h1,h2,h3,h4,h5,h6{font-family:var(--serif);color:var(--ink);line-height:var(--lh-tight);font-weight:700}
h1{font-size:var(--fs-h1);letter-spacing:var(--ls-tight)}
h2{font-size:var(--fs-h2);letter-spacing:var(--ls-tight)}
h3{font-size:var(--fs-h3)}
h4{font-size:var(--fs-h4)}
p{line-height:var(--lh-normal);color:var(--text-light)}
p+p{margin-top:var(--sp-4)}
ul,ol{line-height:var(--lh-normal)}

/* 关键字高亮：strong 加深色 + kw class 带微背景 */
strong{color:var(--ink);font-weight:700}
.kw,.page-body strong:not(.nc-title):not(.ce-text strong):not(.gip-stat strong):not(.gm-score-row strong):not(.gm-final-stats strong):not(.artisan-tags span):not(.sna-label){color:#a03520;background:linear-gradient(180deg,transparent 55%,rgba(200,85,61,.1) 55%,rgba(200,85,61,.1) 100%);padding:0 3px;border-radius:3px}

/* 通用章节标题装饰（::after 下划线） */
.heading-accent{position:relative;display:inline-block;padding-bottom:var(--sp-3)}
.heading-accent::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:40px;height:3px;background:var(--accent);border-radius:2px}
.heading-accent.left::after{left:0;transform:none}
.heading-accent.left{padding-left:var(--sp-4)}
.heading-accent.left::after{left:0}

/* ========== Loader ========== */
.loader{position:fixed;inset:0;z-index:10000;background:var(--bg-dark);display:flex;align-items:center;justify-content:center;transition:opacity .8s,visibility .8s}
.loader.hidden{opacity:0;visibility:hidden}
.loader-inner{text-align:center}
.ink-svg{width:120px;height:120px}
.ink-circle{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:503;stroke-dashoffset:503;animation:inkDraw 2s ease forwards}
.ink-text{fill:var(--bg);font-size:48px;font-family:var(--serif);font-weight:700}
@keyframes inkDraw{to{stroke-dashoffset:0}}
.loader-quote{color:var(--accent2);font-family:var(--serif);font-size:1.1rem;margin-top:24px;letter-spacing:.3em}
.loader-bar{width:200px;height:2px;background:rgba(255,255,255,.1);margin:20px auto 0;border-radius:2px;overflow:hidden}
.loader-progress{height:100%;background:var(--accent);width:0;animation:loadBar 1.8s ease forwards .3s}
@keyframes loadBar{to{width:100%}}

/* ========== 欢迎弹窗（国风·非强制） ========== */
.welcome-modal{position:fixed;inset:0;z-index:9500;display:none;align-items:center;justify-content:center}
.welcome-modal.show{display:flex}
.welcome-modal-backdrop{position:absolute;inset:0;background:rgba(44,24,16,.42);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.welcome-modal-box{position:relative;background:linear-gradient(180deg,#fbf7f1,#f4ece1);border:1px solid rgba(200,85,61,.32);border-radius:18px;padding:42px 38px 30px;max-width:448px;width:90%;text-align:center;box-shadow:0 24px 70px rgba(60,30,16,.28);animation:welcomeIn .4s ease}
@keyframes welcomeIn{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.welcome-close{position:absolute;top:12px;right:12px;background:none;border:none;font-size:1.6rem;color:var(--text-muted);cursor:pointer;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s}
.welcome-close:hover{background:rgba(60,30,16,.06);color:var(--ink)}
.welcome-icon{margin-bottom:14px}
.welcome-title{font-family:var(--serif);font-size:1.5rem;font-weight:700;color:var(--ink);margin-bottom:10px}
.welcome-desc{color:var(--text-light);line-height:1.7;font-size:.92rem;margin-bottom:22px}
.welcome-actions{display:flex;gap:12px;justify-content:center;margin-bottom:16px}
.welcome-btn{padding:11px 26px;border-radius:12px;font-size:.95rem;font-weight:600;cursor:pointer;border:none;transition:all .3s}
/* 「游客浏览」朱砂红主按钮，突出免费浏览路径 */
.welcome-btn-primary{background:linear-gradient(135deg,var(--accent),#a83d28);color:#fff;box-shadow:0 8px 22px rgba(200,85,61,.32)}
.welcome-btn-primary:hover{transform:translateY(-1px);box-shadow:0 12px 30px rgba(200,85,61,.42)}
/* 「登录/注册」浅棕描边次按钮 */
.welcome-btn-secondary{background:transparent;color:#9c7b56;border:1.5px solid rgba(184,140,100,.55)}
.welcome-btn-secondary:hover{border-color:var(--accent);color:var(--accent)}
.welcome-remember{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;color:var(--text-muted);cursor:pointer;user-select:none}
.welcome-remember input{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}

/* ========== 新手引导（分步高亮） ========== */
.ob-overlay{position:fixed;inset:0;z-index:9600;display:none}
.ob-overlay.show{display:block}
.ob-spot{position:fixed;background:transparent;box-shadow:0 0 0 9999px rgba(28,16,9,.62);border:2px solid rgba(200,85,61,.9);pointer-events:none;transition:all .35s cubic-bezier(.22,1,.36,1);z-index:9601}
.ob-tip{position:fixed;z-index:9602;max-width:320px;width:max-content;background:rgba(251,247,241,.98);border:1px solid rgba(200,85,61,.28);border-radius:14px;padding:14px 16px 12px;box-shadow:0 18px 50px rgba(40,20,10,.32);font-family:var(--sans)}
.ob-tip-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px dashed rgba(200,85,61,.2)}
.ob-indicator{font-size:.7rem;background:var(--accent);color:#fff;padding:2px 8px;border-radius:10px;letter-spacing:.06em;font-weight:600}
.ob-tip-title{flex:1;font-size:.78rem;color:var(--ink);font-weight:600;letter-spacing:.04em}
.ob-x{background:transparent;border:none;color:var(--text-muted);font-size:1.3rem;line-height:1;cursor:pointer;padding:0 4px;transition:color .2s}
.ob-x:hover{color:var(--ink)}
.ob-tip-text{margin:0 0 12px;font-size:.88rem;line-height:1.7;color:var(--ink)}
.ob-tip-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end}
.ob-tip-actions button{font-family:var(--sans);font-size:.82rem;padding:6px 12px;border-radius:10px;cursor:pointer;border:none;transition:all .3s}
.ob-skip{background:transparent;color:var(--text-muted);margin-right:auto}
.ob-skip:hover{color:var(--ink);text-decoration:underline}
.ob-prev{background:rgba(184,140,100,.14);color:#9c7b56}
.ob-prev:hover{background:rgba(184,140,100,.24)}
.ob-next{background:linear-gradient(135deg,var(--accent),#a83d28);color:#fff;font-weight:600;padding:6px 16px}
.ob-next:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(200,85,61,.35)}
.ob-arrow{position:absolute;width:0;height:0;border:7px solid transparent;filter:drop-shadow(0 1px 1px rgba(0,0,0,.08))}
/* 引导高亮的目标元素：脉冲光晕 + z-index 提升到遮罩之上但低于 tip */
.ob-highlight{position:relative;z-index:9601;animation:obPulse 2s ease-in-out infinite}
@keyframes obPulse{0%,100%{box-shadow:0 0 0 0 rgba(200,85,61,.4)}50%{box-shadow:0 0 0 8px rgba(200,85,61,0)}}
/* 页脚「重新看引导」入口 */
.ob-replay{cursor:pointer;color:var(--text-muted);font-size:.78rem;border:none;background:transparent;font-family:var(--sans)}
.ob-replay:hover{color:var(--accent);text-decoration:underline}

/* ========== 通用按钮 hover 提示（data-tip） ========== */
.has-tip{position:relative}
.has-tip[data-tip]::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%) translateY(4px);background:rgba(44,24,16,.92);color:#f6efe6;font-size:.72rem;white-space:nowrap;padding:5px 10px;border-radius:8px;opacity:0;pointer-events:none;transition:all .2s;font-family:var(--sans);z-index:9603}
.has-tip[data-tip]:hover::after{opacity:1;transform:translateX(-50%) translateY(0)}

/* ========== Page Container ========== */
.app-container{position:relative;width:100%;height:100vh;overflow:hidden}
.page{position:absolute;inset:0;z-index:2;overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:translateY(20px);transition:opacity var(--page-transition),transform var(--page-transition),visibility var(--page-transition);scrollbar-width:thin;scrollbar-color:var(--border) transparent;padding-bottom:calc(var(--copybar-h) + 10px);background:var(--bg)}
.page:not(#page-home){background-image:url('assets/backgrounds/paper-floral.jpg');background-size:cover;background-position:center}
.page:not(#page-home)::before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(31,18,8,.76) 0%,rgba(31,18,8,.34) 18%,rgba(253,250,244,.30) 40%,rgba(248,244,239,.48) 100%);z-index:0;pointer-events:none}
.page:not(#page-home) .page-topbar{position:relative;z-index:1}
.page:not(#page-home) .page-body{position:relative;z-index:1}
.page::-webkit-scrollbar{width:6px}
.page::-webkit-scrollbar-track{background:transparent}
.page::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
.page.active{opacity:1;visibility:visible;transform:translateY(0);z-index:3}
.page.entering{opacity:1;visibility:visible;transform:translateY(0)}
/* 性能优化：隐藏页（非 active）的所有动画暂停，避免 11 个页面同驻 DOM 时后台空转 CPU/GPU */
.page:not(.active) *{animation-play-state:paused !important}

/* ========== 顶部横向导航（取代旧的左侧折叠侧栏） ========== */
:root{ --tn-h:64px; --tn-pad-x:clamp(18px,3.6vw,44px); }
.top-nav{
    position:fixed;top:0;left:0;right:0;height:var(--tn-h);z-index:950;
    background:transparent;
    transition:background .26s,box-shadow .26s,backdrop-filter .26s;
}
.top-nav[data-state="page"]{
    background:rgba(248,244,239,.92);
    -webkit-backdrop-filter:blur(6px) saturate(140%);backdrop-filter:blur(6px) saturate(140%);
    box-shadow:0 1px 0 var(--hairline);
}
.top-nav-inner{
    max-width:1480px;height:100%;margin:0 auto;padding:0 var(--tn-pad-x);
    display:flex;align-items:center;gap:22px;
}
.top-nav-brand{
    display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;
    flex:0 0 auto;
}
.brand-seal{
    width:34px;height:34px;display:grid;place-items:center;
    background:linear-gradient(135deg,#c8553d 0%,#a8392a 100%);
    color:#fff;font-family:var(--serif);font-size:18px;font-weight:700;
    border-radius:6px;letter-spacing:.05em;
    box-shadow:0 4px 14px rgba(200,85,61,.34),inset 0 1px 0 rgba(255,255,255,.18);
    transition:transform .3s;
}
.top-nav-brand:hover .brand-seal{transform:rotate(-6deg) scale(1.06)}
.brand-text{display:flex;flex-direction:column;line-height:1.15}
.top-nav[data-state="home"] .brand-text strong{color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.35)}
.top-nav[data-state="page"] .brand-text strong{color:var(--ink)}
.brand-text strong{font-family:var(--serif);font-size:1.02rem;font-weight:700;letter-spacing:.14em}
.brand-text small{display:block;font-size:11px;color:currentColor;opacity:.6;letter-spacing:.04em;margin-top:2px;font-family:var(--sans)}
.top-nav-list{display:flex;align-items:center;gap:2px;margin-left:auto}
.tn-link{
    position:relative;padding:8px 12px;font-size:14px;font-family:var(--sans);
    text-decoration:none;border-radius:8px;letter-spacing:.06em;
    transition:opacity .2s,background .2s,color .2s;
    background:transparent;border:none;cursor:pointer;
}
.top-nav[data-state="home"]{
    background:rgba(248,244,239,.9);
    -webkit-backdrop-filter:blur(6px) saturate(130%);
    backdrop-filter:blur(6px) saturate(130%);
    box-shadow:0 1px 0 rgba(44,24,16,.08);
    border-bottom:1px solid rgba(44,24,16,.06);
}
.top-nav[data-state="home"] .brand-text strong{color:var(--ink);text-shadow:none}
.top-nav[data-state="home"] .tn-link{color:var(--ink);opacity:.82}
.top-nav[data-state="home"] .tn-hamburger{color:var(--ink)}
.top-nav[data-state="page"] .tn-link{color:var(--ink);opacity:.86}
.tn-link:hover{opacity:1;background:rgba(212,164,116,.22)}
.top-nav[data-state="page"] .tn-link:hover{background:rgba(212,164,116,.18);color:var(--ink)}
.tn-link.active{
    opacity:1;font-weight:700;color:var(--ink);
    background:rgba(232,222,202,.55);
    padding-left:18px;
    box-shadow:inset 0 0 0 1px rgba(200,85,61,.42);
}
.tn-link.active::before{
    content:'';position:absolute;left:6px;top:18%;bottom:18%;
    width:2px;background:var(--accent);border-radius:2px;
    box-shadow:0 0 4px rgba(200,85,61,.5);
}
.tn-link.active::after{
    content:'';position:absolute;left:18px;right:18px;bottom:2px;
    height:2px;background:var(--accent);border-radius:2px;
}
.top-nav[data-state="home"] .tn-link.active{
    color:var(--ink);
    background:rgba(232,222,202,.65);
    box-shadow:inset 0 0 0 1px rgba(200,85,61,.42);
}
.top-nav[data-state="home"] .tn-link.active::before{
    background:var(--accent);box-shadow:0 0 4px rgba(200,85,61,.5);
}
.top-nav[data-state="home"] .tn-link.active::after{background:var(--accent)}
.top-nav-actions{display:flex;align-items:center;gap:4px;margin-left:8px}
.tn-icon-btn{
    width:36px;height:36px;display:grid;place-items:center;background:transparent;
    border:none;border-radius:8px;cursor:pointer;
    transition:opacity .2s,background .2s;
}
.top-nav[data-state="home"] .tn-icon-btn{color:var(--ink);opacity:.78}
.top-nav[data-state="page"] .tn-icon-btn{color:var(--ink);opacity:.75}
.tn-icon-btn:hover{opacity:1;background:rgba(200,85,61,.14)}
.tn-icon-btn svg{width:18px;height:18px;display:block}
.tn-auth{display:flex;align-items:center;gap:6px;margin-left:4px}
.tn-admin{padding:6px 12px;font-size:13px;border-radius:18px;background:var(--accent);color:#fff;opacity:1 !important;font-weight:600;letter-spacing:.06em}
.tn-admin:hover{background:#a8392a}
.tn-hamburger{
    display:none;width:42px;height:42px;flex-direction:column;justify-content:center;
    align-items:center;gap:5px;background:transparent;border:none;cursor:pointer;margin-left:auto;
}
.tn-hamburger span{display:block;width:22px;height:2px;background:currentColor;border-radius:1px;transition:transform .3s,opacity .3s}
.top-nav[data-drawer="open"] .tn-hamburger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.top-nav[data-drawer="open"] .tn-hamburger span:nth-child(2){opacity:0}
.top-nav[data-drawer="open"] .tn-hamburger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.tn-drawer-mask{
    position:fixed;inset:0;background:rgba(28,18,10,.5);z-index:940;opacity:0;
    pointer-events:none;transition:opacity .26s;
}
.tn-drawer-mask.show{opacity:1;pointer-events:auto}
@media(max-width:1024px){
    .top-nav-list{display:none}
    .top-nav-actions .tn-icon-btn{display:none}
    .tn-admin{display:none}
    .tn-hamburger{display:flex}
    .top-nav[data-state="home"] .tn-hamburger{color:#fff}
    .top-nav[data-state="page"] .tn-hamburger{color:var(--ink)}
    /* 移动端抽屉菜单 */
    .top-nav[data-drawer="open"] .top-nav-list{
        display:flex;flex-direction:column;position:fixed;top:var(--tn-h);left:0;right:0;z-index:951;
        background:rgba(248,244,239,.98);
        -webkit-backdrop-filter:blur(8px) saturate(150%);backdrop-filter:blur(8px) saturate(150%);
        padding:16px 20px 22px;align-items:stretch;gap:2px;
        border-bottom:1px solid var(--hairline);
        box-shadow:0 12px 32px rgba(0,0,0,.12);
        max-height:calc(100vh - var(--tn-h));overflow-y:auto;
    }
    .top-nav[data-drawer="open"] .top-nav-list .tn-link{
        padding:14px 12px;font-size:15px;border-radius:10px;color:var(--ink);opacity:.88;
    }
    .top-nav[data-drawer="open"] .tn-admin{display:block;margin-top:10px;text-align:center}
}
@media(max-width:480px){
    .brand-text small{display:none}
}


/* ========== 全站常驻动态 + 回到顶部按钮 ========== */
#globalAtmosphere{position:fixed;inset:0;z-index:880;pointer-events:none;overflow:hidden}
/* 水流微光：底部 32% 高度，缓慢明暗呼吸 + 漂移 */
.atm-waterglint{
    position:absolute;left:0;right:0;bottom:0;height:34%;pointer-events:none;
    background:
        linear-gradient(180deg, transparent 0%, rgba(248,235,210,.14) 60%, rgba(220,200,170,.22) 100%),
        radial-gradient(ellipse 55% 85% at 28% 72%, rgba(255,240,210,.16), transparent 72%),
        radial-gradient(ellipse 45% 70% at 78% 88%, rgba(212,165,116,.14), transparent 72%);
    mix-blend-mode:screen;opacity:.7;
    /* 性能优化(2026-09)：改为 opacity 呼吸，避免 background-position 动画每帧重绘整层 */
    animation:atmWaterGlint 16s ease-in-out infinite alternate;
    transform:translateZ(0);
}
@keyframes atmWaterGlint{
    0%{opacity:.55}
    100%{opacity:.72}
}
/* 纸絮：17 颗随机分布 + 不同延迟，缓慢下飘 + 轻微左右摆动 + 旋转 */
.atm-flakes{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.atm-flake{
    position:absolute;top:-10%;width:5px;height:5px;
    background:radial-gradient(circle, rgba(255,250,240,.92) 0%, rgba(252,244,228,.4) 60%, transparent 100%);
    border-radius:50%;opacity:0;will-change:transform,opacity;
    animation:atmFlakeDrift linear infinite;
}
@keyframes atmFlakeDrift{
    0%{transform:translate3d(0,-10vh,0) rotate(0);opacity:0}
    8%{opacity:.45}
    50%{transform:translate3d(20px,55vh,0) rotate(180deg);opacity:.4}
    92%{opacity:.22}
    100%{transform:translate3d(-10px,115vh,0) rotate(360deg);opacity:0}
}
@media (prefers-reduced-motion: reduce){
    .atm-waterglint{animation:none;opacity:.45}
    .atm-flakes{display:none}
}

/* ========== 回到顶部悬浮按钮 ========== */
.back-to-top{
    position:fixed;right:24px;bottom:calc(var(--copybar-h) + 26px);width:48px;height:48px;
    border-radius:50%;background:var(--frost);
    -webkit-backdrop-filter:blur(12px) saturate(140%);backdrop-filter:blur(12px) saturate(140%);
    border:1.5px solid var(--accent);
    box-shadow:0 6px 18px rgba(28,18,10,.18), inset 0 0 0 1px rgba(255,255,255,.55);
    color:var(--accent);cursor:pointer;z-index:870;
    opacity:0;transform:translateY(20px);pointer-events:none;
    transition:opacity .26s ease,transform .26s ease,box-shadow .26s,background .26s;
    display:grid;place-items:center;
}
.back-to-top.show{opacity:1;transform:translateY(0);pointer-events:auto}
.back-to-top:hover{
    box-shadow:0 10px 24px rgba(200,85,61,.30), inset 0 0 0 1px rgba(255,255,255,.70);
    background:rgba(252,246,238,.94);color:#a8392a
}
.back-to-top:active{transform:translateY(1px) scale(.96)}
.back-to-top svg{width:20px;height:20px;display:block}
@media (max-width:768px){
    .back-to-top{right:14px;bottom:calc(var(--copybar-h) + 16px);width:42px;height:42px}
    .back-to-top svg{width:17px;height:17px}
}
@media (max-width:480px){
    .back-to-top{right:10px;bottom:calc(var(--copybar-h) + 12px);width:38px;height:38px}
}
@media (prefers-reduced-motion: reduce){
    .back-to-top{transition:opacity .15s ease}
}


.page-home{overflow:hidden;background:var(--bg)}
.hero-section{
    position:relative;height:calc(100vh - var(--tn-h) - var(--copybar-h));margin-top:var(--tn-h);
    display:flex;align-items:center;justify-content:flex-start;
    padding:0 clamp(36px,5vw,90px) 0 clamp(90px,7vw,150px);
    overflow:hidden;background:var(--bg-dark);
}
.hero-bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.hero-scene-bg{position:absolute;inset:0;background:#efe6d6}
.hero-scene-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center right;transform:scale(1.04);animation:heroKenBurns 16s ease-out forwards;z-index:0;transform-origin:center 60%;opacity:.85}
@keyframes heroKenBurns{from{transform:scale(1.10)}to{transform:scale(1.06)}}
.hero-scene-bg .slot-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center center;animation:heroKenBurns 16s ease-out forwards}
.hero-scene-bg.slot-filled .hero-scene-img{display:none}
/* 图片来源角标（AI 示意/装饰图标注） */
.img-credit{position:absolute;left:14px;bottom:14px;z-index:5;padding:4px 11px;border-radius:20px;background:rgba(31,18,8,.6);color:#f6efe6;font-size:.72rem;letter-spacing:.02em;font-family:system-ui,"PingFang SC","Microsoft YaHei",sans-serif;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);pointer-events:none;box-shadow:0 2px 10px rgba(0,0,0,.25)}
.img-credit--hero{left:auto;right:22px;top:clamp(20px,4vh,30px);bottom:auto;background:rgba(58,36,24,.16);color:rgba(245,232,214,.78);font-size:.64rem;font-weight:300;max-width:300px;white-space:normal;line-height:1.7;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:none;border:1px solid rgba(232,214,192,.12)}
/* 首页图片来源声明区块 */
.img-source-decl{margin:44px auto 12px;max-width:920px;padding:26px 30px;background:rgba(255,255,255,.72);border:1px solid rgba(44,24,16,.12);border-radius:18px;box-shadow:0 6px 28px rgba(44,24,16,.06)}
.isd-title{font-family:"Noto Serif SC","Songti SC",serif;font-size:1.18rem;color:#2c1810;margin:0 0 10px}
.isd-intro{margin:0 0 14px;color:#5a4636;font-size:.92rem}
.isd-list{margin:0;padding-left:20px;line-height:1.95;font-size:.9rem;color:#4a3a2c}
.isd-list li{margin-bottom:9px}
.isd-list a{color:#c8553d;text-decoration:underline}
.isd-list code{background:rgba(44,24,16,.06);padding:1px 6px;border-radius:5px;font-size:.84em}
.isd-ai{color:#9a5a2c;font-weight:600}
.hero-gradient{
    position:absolute;inset:0;z-index:1;pointer-events:none;
    background:
        radial-gradient(at 86% 20%, rgba(255,250,242,.28) 0%, transparent 46%),
        linear-gradient(95deg, rgba(248,244,239,.74) 0%, rgba(248,244,239,.30) 40%, rgba(248,244,239,0) 64%),
        linear-gradient(180deg, rgba(40,26,16,.10) 0%, transparent 28%, rgba(40,26,16,.10) 62%, rgba(40,26,16,.30) 100%);
}
.hero-mist{position:absolute;bottom:10%;left:-10%;width:120%;height:120px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent,rgba(255,255,255,.04),transparent);animation:mistDrift 20s linear infinite}
@keyframes mistDrift{from{transform:translateX(-20%)}to{transform:translateX(20%)}}
.hero-content{
    position:relative;z-index:2;text-align:center;max-width:min(780px, 52vw);width:100%;max-height:100%;overflow-y:auto;
    padding:22px 34px 22px;align-self:center;
    border-radius:18px;
    /* 细水墨描边（替换原无 border 的硬投影） */
    border:1px solid rgba(44,24,16,.14);
    /* 背景叠加：四角陈纸暗角 + 竹帘暗纹 + 原米色渐变 */
    background-image:
        radial-gradient(ellipse 80% 80% at 0% 0%, rgba(44,24,16,.10) 0%, transparent 55%),
        radial-gradient(ellipse 80% 80% at 100% 0%, rgba(44,24,16,.10) 0%, transparent 55%),
        radial-gradient(ellipse 80% 80% at 0% 100%, rgba(44,24,16,.10) 0%, transparent 55%),
        radial-gradient(ellipse 80% 80% at 100% 100%, rgba(44,24,16,.10) 0%, transparent 55%),
        var(--bamboo-weave),
        linear-gradient(100deg, rgba(249,245,239,.9) 0%, rgba(249,245,239,.62) 60%, rgba(249,245,239,.24) 100%);
    background-size: 100% 100%, 100% 100%, 100% 100%, 100% 100%, 6px 36px, 100% 100%;
    background-attachment: local, local, local, local, local, local;
    -webkit-backdrop-filter:blur(8px) saturate(140%);backdrop-filter:blur(8px) saturate(140%);
    /* 多层阴影：内描边提亮 + 嵌套水墨 + 柔外投影 + 接触阴影 */
    box-shadow:
        inset 0 0 0 1px rgba(255,255,255,.42),
        inset 0 0 0 2px rgba(44,24,16,.05),
        0 8px 24px rgba(28,18,10,.10),
        0 1px 3px rgba(28,18,10,.06);
    margin:0;color:#2c1810;scrollbar-width:none;
}
.hero-content::-webkit-scrollbar{width:0;height:0;display:none}
.hero-content .hero-desc{color:#2c1810;text-shadow:none}
.hero-content .hero-meta{color:rgba(44,24,16,.86)}
.hero-title{text-align:center;margin-bottom:6px}
.title-main{
    display:block;font-family:var(--serif);font-size:clamp(2.6rem,6.6vw,4.4rem);font-weight:900;color:#2c1810;
    letter-spacing:.12em;line-height:1.05;text-shadow:0 1px 0 rgba(255,255,255,.7);
}
.title-char{display:inline-block;opacity:0;transform:translateY(24px) scale(.9);animation:titleCharIn .7s cubic-bezier(.34,1.56,.64,1) forwards}
.title-char:nth-child(1){animation-delay:.2s}
.title-char:nth-child(2){animation-delay:.32s}
.title-char:nth-child(3){animation-delay:.44s}
.title-char:nth-child(4){animation-delay:.56s}
@keyframes titleCharIn{to{opacity:1;transform:translateY(0) scale(1)}}
/* 标签行已删除（原 hero-tag-row / hero-tag / hero-tag--soft） */
.hero-subtitle{
    display:inline-block;position:relative;margin-top:14px;padding-top:12px;
    font-family:var(--sans);font-size:clamp(.95rem,1.55vw,1.18rem);font-weight:400;color:#2c1810;
    letter-spacing:.06em;line-height:1.4;
}
.hero-subtitle::before{
    content:'';position:absolute;left:50%;top:0;transform:translateX(-50%);
    width:48px;height:2px;background:var(--accent);border-radius:2px;
    box-shadow:0 0 4px rgba(200,85,61,.4);
}
/* .hero-desc（标语「千年匠心」）整块已删除（信息层级合并到副标题/简介） */
/* .hero-meta（出品/平台/服务 三行 dl）整块已删除（被 .hero-backing + .hero-modules 替换） */

/* 项目背书（项目单位信息） */
.hero-backing{
    margin:14px 0 4px;display:flex;justify-content:center;align-items:baseline;gap:14px;
    font-family:var(--serif);font-size:.92rem;color:rgba(44,24,16,.88);line-height:1.5;
}
.hero-backing-label{
    font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.22em;
    color:var(--accent);text-transform:uppercase;
    position:relative;padding-left:14px;
}
.hero-backing-label::before{
    content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);
    width:3px;height:11px;background:var(--accent);border-radius:2px;
}
.hero-backing-value{letter-spacing:.04em;font-weight:600}

/* 核心模块 5 个 tag */
.hero-modules{
    margin:6px 0 12px;display:flex;flex-direction:column;align-items:center;gap:7px;
}
.hero-modules-label{
    font-family:var(--sans);font-size:.7rem;font-weight:700;letter-spacing:.22em;
    color:rgba(44,24,16,.55);text-transform:uppercase;
}
.hero-modules-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;max-width:100%}
.hero-mod-tag{
    display:inline-block;padding:4px 12px;font-size:.78rem;letter-spacing:.04em;
    font-family:var(--sans);color:#2c1810;line-height:1.4;
    background:rgba(252,248,240,.85);
    border:1px solid rgba(44,24,16,.18);
    border-radius:18px;
    transition:all .25s cubic-bezier(.2,.8,.3,1);
    cursor:default;
}
.hero-mod-tag:hover{
    border-color:var(--accent);color:var(--accent);
    background:rgba(200,85,61,.10);transform:translateY(-1px);
}
/* 平台简介（开门见山 + 特色 + 可做什么；拆 4 段，左对齐首行缩进） */
.hero-intro{
    margin:8px 0 10px;padding:11px 18px;
    background:
        linear-gradient(180deg, rgba(252,248,240,.82) 0%, rgba(248,242,228,.66) 100%),
        var(--paper-grain);
    background-size:100% 100%, 160px 160px;
    background-blend-mode:normal, multiply;
    border:1px solid rgba(44,24,16,.10);border-top:1.5px solid rgba(200,85,61,.32);
    border-radius:14px;
    -webkit-mask-image:var(--mask-cloud-corner);mask-image:var(--mask-cloud-corner);
    -webkit-mask-size:100% 100%;mask-size:100% 100%;
    -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
    font-family:var(--serif);font-size:.86rem;line-height:1.85;color:#4a382b;letter-spacing:.01em;
    text-align:left;
}
.hero-intro p{margin:0 0 6px;text-indent:2em}
.hero-intro p:last-child{margin-bottom:0}
.hero-intro .hero-intro-lead{text-indent:0}
.hero-intro strong{color:var(--accent);font-weight:600;letter-spacing:.02em}

/* 首屏纸屑飘落（仅视觉，无胶囊文字） */
/* 向下探索提示 / 飘纸屑 / 探索第二屏 section 已删除：单屏无滚动 */

/* ========== 三组分组的版块入口（现收进首屏左侧卡片底部） ========== */

/* ========== 三组分组的版块入口 ========== */
.hero-quicknav{display:flex;flex-wrap:wrap;gap:14px;margin-top:14px}
/* 收进首屏左侧卡片底部：三组入口铺满卡片宽度，按钮均匀分配 */
.hero-content .qn-group{
    background:
        linear-gradient(180deg, rgba(252,248,240,.80) 0%, rgba(248,242,228,.62) 100%),
        var(--paper-grain);
    background-size:100% 100%, 160px 160px;
    background-blend-mode:normal, multiply;
    border:1px solid rgba(44,24,16,.09);border-radius:16px;
    -webkit-mask-image:var(--mask-cloud-corner);mask-image:var(--mask-cloud-corner);
    -webkit-mask-size:100% 100%;mask-size:100% 100%;
    -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.32), 0 4px 18px rgba(44,24,16,.06);
    padding:14px 14px 14px;min-width:0;flex:1 1 auto;display:flex;flex-direction:column;gap:14px;
}
.hero-content .qn-group-wide{min-width:0;flex:2 1 auto}
.hero-content .qn-row{gap:10px}
.hero-content .qn-item{min-width:0;flex:1 1 auto;padding:12px 8px;font-size:.76rem}
.hero-content .qn-ico{width:22px;height:22px}
.hero-content .qn-ico svg{width:19px;height:19px}
.qn-group{
    background:rgba(255,255,255,.84);border:1px solid rgba(44,24,16,.08);border-radius:14px;
    padding:18px 16px 18px;display:flex;flex-direction:column;gap:14px;min-width:200px;
    -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 4px 18px rgba(44,24,16,.06);
}
.qn-group-wide{flex:1;min-width:300px}
.qn-group-label{
    font-family:var(--serif);font-size:.84rem;font-weight:700;
    color:var(--ink);letter-spacing:.22em;text-transform:uppercase;
    text-align:center;position:relative;padding-bottom:8px;
}
.qn-group-label::after{
    content:'';position:absolute;left:50%;bottom:0;
    transform:translateX(-50%);width:36px;height:2px;
    background:var(--accent);border-radius:2px;opacity:.7;
}
.qn-row{display:flex;flex-wrap:wrap;gap:12px}
.qn-item{
    display:flex;flex-direction:column;align-items:center;gap:8px;
    min-width:74px;padding:14px 10px;background:#fff;border:1px solid rgba(44,24,16,.08);border-radius:10px;
    color:#5b4636;font-size:.76rem;cursor:pointer;
    transition:transform .35s cubic-bezier(.2,.8,.3,1),box-shadow .35s ease,color .25s,border-color .25s,background-color .35s ease;
    font-family:var(--sans);letter-spacing:.04em;
}
.qn-item:hover{
    transform:translateY(-2px) scale(1.03);
    box-shadow:0 10px 24px rgba(200,85,61,.22), 0 2px 6px rgba(200,85,61,.10);
    color:var(--accent);
    background:rgba(253,250,244,.95);
    border-color:rgba(200,85,61,.35);
}
.qn-ico{display:flex;width:26px;height:26px;align-items:center;justify-content:center}
.qn-ico svg{width:22px;height:22px}

.hero-fiber{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.5;background:radial-gradient(circle at 28% 22%,rgba(200,85,61,.06),transparent 42%),radial-gradient(circle at 72% 78%,rgba(212,165,116,.07),transparent 44%);mix-blend-mode:screen}

/* 水流微光（叠加在主图底部，模拟匠人抄纸水面的反光；14s 缓慢呼吸） */
.hero-waterglint{
    position:absolute;left:0;right:0;bottom:0;height:32%;
    pointer-events:none;z-index:1;
    background:
        linear-gradient(180deg, transparent 0%, rgba(248,235,210,.18) 60%, rgba(220,200,170,.32) 100%),
        radial-gradient(ellipse 50% 80% at 30% 70%, rgba(255,240,210,.20), transparent 70%),
        radial-gradient(ellipse 35% 60% at 78% 85%, rgba(255,235,200,.16), transparent 75%);
    mix-blend-mode:screen;
    /* 性能优化(2026-09)：opacity 呼吸代替 background-position 动画，避免整层逐帧重绘 */
    animation:waterShimmer 14s ease-in-out infinite alternate;
    transform:translateZ(0);
}
@keyframes waterShimmer{
    0%{opacity:.82}
    100%{opacity:1}
}

/* 纸絮飘落（覆盖 hero 全宽，集中主图右侧 35%-88% 区域避开左侧文字） */
.hero-flakes{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}
.flake{
    position:absolute;top:-10%;width:6px;height:6px;
    background:radial-gradient(circle, rgba(255,250,240,.85) 0%, rgba(252,244,228,.3) 60%, transparent 100%);
    border-radius:50%;opacity:0;will-change:transform,opacity;
}
.flake:nth-child(1){left:48%;width:4px;height:4px;animation:flakeDrift 22s 0s linear infinite}
.flake:nth-child(2){left:62%;width:7px;height:7px;animation:flakeDrift 28s 4s linear infinite}
.flake:nth-child(3){left:55%;width:5px;height:5px;animation:flakeDrift 24s 8s linear infinite}
.flake:nth-child(4){left:72%;width:4px;height:4px;animation:flakeDrift 26s 2s linear infinite}
.flake:nth-child(5){left:80%;width:6px;height:6px;animation:flakeDrift 30s 6s linear infinite}
.flake:nth-child(6){left:88%;width:5px;height:5px;animation:flakeDrift 25s 10s linear infinite}
.flake:nth-child(7){left:42%;width:4px;height:4px;animation:flakeDrift 27s 12s linear infinite}
.flake:nth-child(8){left:35%;width:3px;height:3px;animation:flakeDrift 32s 14s linear infinite}
@keyframes flakeDrift{
    0%{transform:translate3d(0,0,0) rotate(0deg);opacity:0}
    8%{opacity:.35}
    50%{transform:translate3d(20px,55vh,0) rotate(180deg);opacity:.30}
    92%{opacity:.18}
    100%{transform:translate3d(-10px,115vh,0) rotate(360deg);opacity:0}
}
@media (prefers-reduced-motion: reduce){
    .hero-waterglint{animation:none;opacity:.6}
    .hero-flakes{display:none}
}
.copy-bar{
    position:fixed;left:0;right:0;bottom:0;height:var(--copybar-h);z-index:900;
    display:flex;flex-direction:row;align-items:center;justify-content:center;
    padding:0 14px;background:var(--frost);
    -webkit-backdrop-filter:blur(var(--frost-blur));backdrop-filter:blur(var(--frost-blur));
    border-top:1px solid var(--hairline);color:#6e5a47;
    font-size:.65rem;letter-spacing:.01em;text-align:center;font-family:var(--sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.copy-bar .cb-line{display:inline-flex;align-items:center;gap:.35em;max-width:min(100%,1400px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.copy-bar .cb-cr{color:#4a403a;font-weight:500;white-space:nowrap}
.copy-bar .cb-sep{color:#cdbfa9;font-weight:400;white-space:nowrap}
.copy-bar .cb-pri{color:var(--accent);font-weight:700;white-space:nowrap}
.copy-bar .cb-src{color:#a89888;font-weight:400;white-space:nowrap}
.copy-bar .cb-beian{color:#4a403a;font-weight:500;text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center}
.copy-bar .cb-beian:hover{color:var(--accent);text-decoration:underline}
.copy-bar .mps-beian img{flex-shrink:0}
.copy-bar .ob-replay{white-space:nowrap}
@media (max-width: 1100px){
    .copy-bar .cb-pri,
    .copy-bar .cb-src{display:none}
}
@media (max-width: 640px){
    .copy-bar{padding:0 10px;font-size:.58rem}
    .copy-bar .cb-cr{font-size:.58rem}
}
.overview-card{position:relative;overflow:hidden;cursor:pointer;border:1px solid transparent}
.overview-card:hover{border-color:var(--accent2)}
.ov-icon{width:48px;height:48px;color:var(--accent);margin-bottom:var(--sp-4)}
.ov-icon svg{width:100%;height:100%}
.ov-num{position:absolute;top:var(--sp-4);right:var(--sp-5);font-family:var(--serif);font-size:2.5rem;font-weight:900;color:rgba(200,85,61,.08);line-height:1}
.overview-card h3{font-family:var(--serif);font-size:var(--fs-h3);color:var(--ink);margin-bottom:var(--sp-3)}
.overview-card p{font-size:var(--fs-sm);color:var(--text-light);line-height:var(--lh-loose);margin-bottom:var(--sp-4)}
.ov-tags{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-3)}
.ov-tags span{font-size:var(--fs-xs);color:var(--accent);background:rgba(200,85,61,.08);padding:3px 10px;border-radius:20px}
.ov-arrow{font-size:1.2rem;color:var(--accent);opacity:0;transform:translateX(-8px);transition:all .3s}
.overview-card:hover .ov-arrow{opacity:1;transform:translateX(0)}

/* ========== Highlights Bar ========== */
.highlights-bar{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-5);padding:0 24px var(--sp-9);max-width:1240px;margin:0 auto}
.highlight-item{background-color:rgba(253,250,244,.94);border-radius:var(--radius-md);padding:var(--sp-5);display:flex;align-items:center;gap:var(--sp-4);box-shadow:var(--card-shadow);border-left:3px solid var(--accent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:all .3s}
.highlight-item:hover{transform:translateY(-3px);box-shadow:0 8px 24px var(--shadow-md);background-color:rgba(253,250,244,.98)}
.hl-icon{width:36px;height:36px;color:var(--accent);flex-shrink:0}
.hl-icon svg{width:100%;height:100%}
.highlight-item strong{display:block;font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:var(--sp-1)}
.highlight-item span{font-size:var(--fs-sm);color:var(--text-light)}

/* ========== Page Topbar ========== */
.page-topbar{background:linear-gradient(180deg,rgba(31,18,8,.86) 0%,rgba(31,18,8,.62) 70%,rgba(31,18,8,.28) 100%);padding:96px 24px 56px;text-align:center;position:relative;overflow:hidden;backdrop-filter:blur(2px)}
.page-topbar::before{content:'';position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 0L30 60M0 30L60 30' stroke='rgba(212,165,116,0.04)' stroke-width='1'/%3E%3C/svg%3E");opacity:.4}
.topbar-inner{position:relative;z-index:1;max-width:720px;margin:0 auto}
.topbar-tag{display:inline-block;font-size:var(--fs-xs);font-weight:600;letter-spacing:var(--ls-wide);color:var(--accent2);text-transform:uppercase;margin-bottom:var(--sp-3);text-shadow:0 1px 4px rgba(31,18,8,.35)}
.topbar-title{font-family:var(--serif);font-size:var(--fs-h1);font-weight:700;color:#fff;letter-spacing:var(--ls-tight);margin-bottom:var(--sp-3);line-height:var(--lh-tight);text-shadow:0 3px 16px rgba(31,18,8,.45)}
.topbar-desc{color:rgba(255,245,235,.72);font-size:var(--fs-body);line-height:var(--lh-normal);max-width:620px;margin:0 auto;text-shadow:0 1px 8px rgba(31,18,8,.35)}

/* ========== Page Body（毛玻璃底衬·柔化边缘） ========== */
.page-body{padding:56px 24px 96px;max-width:1200px;margin:16px auto;background:rgba(248,244,239,.97);border-radius:28px;box-shadow:0 2px 24px rgba(44,24,16,.05),0 8px 40px rgba(44,24,16,.04);position:relative;overflow:hidden}
.page-body::before{content:'';position:absolute;inset:0;border-radius:28px;padding:1px;background:linear-gradient(135deg,rgba(255,255,255,.5) 0%,rgba(255,255,255,.15) 40%,transparent 70%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:1}
.page-body::after{content:'';position:absolute;inset:0;border-radius:28px;box-shadow:inset 0 0 40px rgba(248,244,239,.40),inset 0 0 20px rgba(248,244,239,.30);pointer-events:none;z-index:1}
.page-body>*{position:relative;z-index:2}

/* ========== Sections Common ========== */
.section-tag{display:inline-block;font-size:var(--fs-xs);font-weight:600;letter-spacing:var(--ls-wide);color:var(--accent);text-transform:uppercase;margin-bottom:var(--sp-4)}
.section-title{font-family:var(--serif);font-size:var(--fs-h1);font-weight:700;color:var(--ink);letter-spacing:var(--ls-tight);margin-bottom:var(--sp-5);position:relative;display:inline-block;padding-bottom:var(--sp-3)}
.section-title::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:48px;height:3px;background:var(--accent);border-radius:2px}
.section-desc{color:var(--text-light);font-size:var(--fs-body);line-height:var(--lh-normal)}
.craft-heading{text-align:center;font-family:var(--serif);font-size:var(--fs-h2);color:var(--ink);margin-bottom:var(--sp-3);position:relative;padding-bottom:var(--sp-3)}
.craft-heading::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:48px;height:3px;background:var(--accent);border-radius:2px}
.craft-sub{text-align:center;color:var(--text-light);margin-bottom:var(--sp-7);font-size:var(--fs-sm);line-height:1.75;max-width:680px;margin-left:auto;margin-right:auto}

/* ========== 通用卡片样式（统一规范） ========== */
.overview-card,.craft-card,.gallery-card,.artisan-card,.about-card,
.revival-panel,.data-card,.fw-stat-card,.tour-card-item,.interview-card,
.extra-card,.tl-card,.creative-card,.class-card,.proc72-card,.pstrip-card,
.ptypes-card,.ptypes-note{
    background-color:rgba(253,250,244,.94);
    border:1px solid rgba(224,213,200,.85);
    border-radius:var(--radius-lg);
    box-shadow:var(--card-shadow);
    -webkit-backdrop-filter:blur(6px);
    backdrop-filter:blur(6px);
    transition:transform .4s,box-shadow .4s,border-color .4s,background-color .4s
}
.overview-card,.craft-card,.artisan-card,.about-card,.revival-panel,
.data-card,.fw-stat-card,.tour-card-item,.interview-card,.extra-card,.tl-card,
.proc72-card,.pstrip-card,.ptypes-card,.ptypes-note{
    padding:var(--card-pad)
}
.overview-card:hover,.craft-card:hover,.gallery-card:not(.hide):hover,
.artisan-card:hover,.about-card:hover,.revival-panel:hover,
.data-card:hover,.fw-stat-card:hover,.tour-card-item:hover,
.interview-card:hover,.extra-card:hover,.tl-card:hover,
.proc72-card:hover,.pstrip-card:hover,.ptypes-card:hover,.ptypes-note:hover{
    background-color:rgba(253,250,244,.98);
    transform:translateY(var(--card-hover-y));
    box-shadow:var(--card-shadow-hover)
}

/* ========== Timeline ========== */
/* 子页面低透明度宣纸纹理底色（技艺溯源 / 数字展厅） */
#page-heritage,#page-gallery{background:linear-gradient(180deg,#fbf6ee,#f5eee2)}
#page-heritage::before,#page-gallery::before{content:'';position:absolute;inset:0;pointer-events:none;background-image:var(--paper-fiber);background-size:220px 220px;opacity:.3;z-index:0}
#page-heritage .page-body,#page-gallery .page-body{position:relative;z-index:1}
.timeline{position:relative;max-width:1200px;margin:0 auto var(--sp-9);padding:var(--sp-5) 0}
.timeline-line{position:absolute;left:50%;top:0;bottom:0;width:2px;background:repeating-linear-gradient(to bottom,rgba(184,140,100,.55) 0 7px,transparent 7px 14px);transform:translateX(-50%);opacity:.7}
.tl-item{position:relative;width:50%;padding:var(--sp-4) var(--sp-6);margin-bottom:var(--sp-5)}
.tl-item.left{left:0;text-align:right}
.tl-item.right{left:50%;text-align:left}
.tl-item::before{content:'';position:absolute;top:28px;width:16px;height:16px;border-radius:50%;background:var(--accent);border:3px solid #fff;z-index:1;box-shadow:0 0 0 4px rgba(200,85,61,.16)}
.tl-item.left::before{right:-7px}
.tl-item.right::before{left:-7px}
.tl-card-accent{border:2px solid var(--accent);background:linear-gradient(135deg,rgba(253,250,244,.96),rgba(200,85,61,.08));display:flex;gap:var(--sp-5);align-items:stretch}
.tl-card{display:flex;gap:var(--sp-5);align-items:flex-start;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:var(--sp-5);box-shadow:var(--shadow-xs)}
.tl-content{flex:1;min-width:0;display:flex;flex-direction:column}
.tl-image{width:160px;min-height:180px;flex-shrink:0;border-radius:var(--radius-md);overflow:hidden;background:linear-gradient(145deg,rgba(250,248,245,.92) 0%,rgba(245,239,232,.92) 50%,rgba(237,229,216,.92) 100%);border:1.5px solid rgba(200,85,61,.15);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);transition:all .35s;position:relative}
.tl-image::before{content:'';position:absolute;top:12px;left:12px;right:12px;bottom:12px;border:1px dashed rgba(200,85,61,.18);border-radius:6px;pointer-events:none}
.tl-image:hover{border-color:var(--accent);transform:scale(1.02);box-shadow:0 4px 16px rgba(200,85,61,.12)}
.tl-img-placeholder{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text-muted)}
.tl-img-placeholder span:first-child{font-size:2rem;opacity:.55}
.tl-img-placeholder span:last-child{font-size:var(--fs-xs);opacity:.65}
/* 真实配图样式：绝对铺满、有图时去掉装饰虚线边框 */
.tl-img-fill{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.tl-image:has(> .tl-img-fill)::before{display:none}
.tl-year{display:inline-flex;align-items:center;font-family:var(--serif);font-size:1.5rem;font-weight:800;color:var(--accent);margin-bottom:var(--sp-1);letter-spacing:.08em}
.tl-year::after{content:'';display:inline-block;width:28px;height:2px;background:var(--accent);margin-left:10px;border-radius:1px;vertical-align:middle}
.tl-item.left .tl-year::after{display:none}
.tl-item.left .tl-year::before{content:'';display:inline-block;width:28px;height:2px;background:var(--accent);margin-right:10px;border-radius:1px;vertical-align:middle}
.tl-card h3{font-family:var(--serif);font-size:1.25rem;color:var(--ink);margin-bottom:var(--sp-2);line-height:1.4}
.tl-card p{font-size:var(--fs-base);color:var(--text-secondary);line-height:1.8;text-align:left}
.tl-icon{margin-top:auto;padding-top:var(--sp-3);color:var(--accent);opacity:.45;transition:opacity .3s}
.tl-card:hover .tl-icon{opacity:.75}
.tl-icon svg{width:36px;height:36px}
.tl-item.left .tl-icon{margin-left:auto}

/* ========== Craft Grid ========== */
.craft-section{max-width:1240px;margin:0 auto}
.craft-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5)}
.craft-card{position:relative;overflow:hidden;border:1px solid transparent}
.craft-card:hover{border-color:var(--accent2)}
.craft-num{position:absolute;top:var(--sp-4);right:var(--sp-5);font-family:var(--serif);font-size:3rem;font-weight:900;color:rgba(200,85,61,.08);line-height:1}
.craft-visual{width:96px;height:96px;margin:0 auto var(--sp-3);color:var(--accent)}
.craft-visual svg{width:100%;height:100%}
.craft-card h4{font-family:var(--serif);font-size:1.25rem;color:var(--ink);text-align:center;margin-bottom:var(--sp-3)}
.craft-card p{font-size:1.0625rem;color:var(--text-light);text-align:center;line-height:var(--lh-loose);margin-bottom:var(--sp-4)}
.craft-detail{display:flex;align-items:center;gap:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);flex-wrap:wrap}
.detail-tag{background:rgba(200,85,61,.1);color:var(--accent);font-size:var(--fs-xs);font-weight:600;padding:3px 10px;border-radius:20px;white-space:nowrap}
.craft-detail span:last-child{font-size:1rem;color:var(--text-muted);flex:1;min-width:100px}

/* ========== Placeholder Styles ========== */
.craft-photo-placeholder{width:100%;aspect-ratio:4/3;max-height:240px;background:rgba(245,237,228,.6);border:1px solid rgba(200,85,61,.12);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:var(--fs-sm);color:var(--text-muted);margin-bottom:var(--sp-4);transition:all .3s;overflow:hidden}
.craft-photo-placeholder:hover{border-color:var(--accent);color:var(--accent)}
/* 文创卡片实拍/AI 生成图：铺满占位区，保留 4:3 比例与圆角 */
.creative-photo{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit;transition:transform .5s}
.creative-card:hover .creative-photo{transform:scale(1.04)}
.creative-photo[src]{cursor:zoom-in}
/* 六大工序实拍图片 */
.craft-photo{width:100%;aspect-ratio:4/3;max-height:240px;object-fit:cover;border-radius:var(--radius-md);margin-bottom:var(--sp-4);transition:transform .3s ease}
.craft-photo:hover{transform:scale(1.02)}
.craft-video-placeholder{width:100%;padding:var(--sp-3);background:rgba(200,85,61,.05);border:1px dashed var(--accent);border-radius:var(--radius-sm);text-align:center;font-size:var(--fs-sm);color:var(--accent);margin-top:var(--sp-3);cursor:pointer;transition:all .3s}
.craft-video-placeholder:hover{background:rgba(200,85,61,.1)}
/* 统一纸品示意占位样式（去掉高饱和底色与“需替换”措辞） */
.card-img-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:0;color:var(--text-muted);background:linear-gradient(180deg,#f3ece0,#eaddcf);border-radius:inherit;z-index:1}
.card-img-fill{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.card-img-placeholder::before{content:attr(data-placeholder);font-size:.76rem;letter-spacing:.02em;padding:6px 13px;border-radius:20px;background:rgba(255,255,255,.72);border:1px solid rgba(184,140,100,.35);color:#9c7b56;max-width:84%;text-align:center;line-height:1.5;box-shadow:0 2px 8px rgba(44,24,16,.06)}
/* 数字展厅卡片：去高饱和纯色底，统一米白渐变 */
.gallery-card .card-img{background:linear-gradient(160deg,#fbf7f1,#efe5d6)!important}
.gallery-card .card-pattern{opacity:.3}
.artisan-avatar{flex-shrink:0;width:100px;height:100px;position:relative}
.artisan-avatar svg{width:100%;height:100%}
.artisan-avatar-placeholder{position:absolute;inset:0;background:rgba(200,85,61,.1);display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);color:var(--text-muted);border-radius:50%}
/* 传承人真实照片 */
.artisan-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}

/* ========== Craft Extra ========== */
.craft-extra{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5);margin-top:var(--sp-7)}
.extra-card{border-left:4px solid var(--accent2)}
.extra-card h4{font-family:var(--serif);font-size:1.25rem;color:var(--ink);margin-bottom:var(--sp-3)}
.extra-card p{font-size:1.0625rem;color:var(--text-light);line-height:1.8}

/* ========== 七十二道工序全览 ========== */
.proc72-section{max-width:1240px;margin:var(--sp-8) auto 0;padding:0 24px}
.proc72-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5);margin-bottom:var(--sp-5)}
.proc72-card{border-left:4px solid var(--accent2)}
.proc72-head{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.proc72-num{font-family:var(--serif);font-size:1.35rem;color:#fff;background:var(--accent);width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:0}
.proc72-card h4{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:2px}
.proc72-stage{font-size:var(--fs-xs);color:var(--accent);letter-spacing:.08em}
.proc72-steps{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:var(--sp-4)}
.proc72-step{font-size:.85rem;color:var(--text);background:rgba(200,85,61,.06);border:1px solid rgba(200,85,61,.16);padding:4px 12px;border-radius:20px;transition:all .25s;cursor:default}
.proc72-step:hover{background:rgba(200,85,61,.12);border-color:var(--accent);transform:translateY(-1px)}
.proc72-step b{color:var(--accent);font-weight:600;margin-right:5px;font-size:.75rem}
.proc72-desc{font-size:.95rem;color:var(--text-light);line-height:1.8;margin:0}
.proc72-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4)}
.pstrip-card{text-align:center;border-top:4px solid var(--gold)}
.pstrip-num{font-family:var(--serif);font-size:2.2rem;font-weight:900;color:var(--accent);line-height:1.1;margin-bottom:4px}
.pstrip-label{font-size:.95rem;font-weight:600;color:var(--ink);margin-bottom:var(--sp-2)}
.pstrip-card p{font-size:.85rem;color:var(--text-light);line-height:1.7;margin:0;text-align:left}
@media(max-width:980px){.proc72-grid{grid-template-columns:1fr}.proc72-strip{grid-template-columns:1fr}}

/* ========== 160余种纸品分类谱系 ========== */
.ptypes-section{max-width:1240px;margin:var(--sp-8) auto 0;padding:0 24px}
.ptypes-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4);margin-bottom:var(--sp-5)}
.ptypes-stat{text-align:center;padding:var(--sp-4) var(--sp-3);border:1px solid rgba(224,213,200,.85);border-radius:var(--radius-md);background:rgba(253,250,244,.9)}
.ptypes-stat .ptypes-num{font-family:var(--serif);font-size:1.75rem;font-weight:900;color:var(--accent);line-height:1.2}
.ptypes-stat .ptypes-cap{font-size:.8rem;color:var(--ink);font-weight:600;margin:4px 0 6px;letter-spacing:.04em}
.ptypes-stat p{font-size:.78rem;color:var(--text-light);line-height:1.6;margin:0}
.ptypes-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5);margin-bottom:var(--sp-5)}
.ptypes-card{border-left:4px solid var(--accent2)}
.ptypes-head{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.ptypes-icon{font-size:1.6rem;color:var(--accent);width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:rgba(200,85,61,.08);border-radius:12px;flex-shrink:0}
.ptypes-card h4{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:2px}
.ptypes-count{font-size:var(--fs-xs);color:var(--accent);letter-spacing:.05em}
.ptypes-desc{font-size:.95rem;color:var(--text-light);line-height:1.8;margin-bottom:var(--sp-3)}
.ptypes-list{display:flex;flex-wrap:wrap;gap:8px}
.ptypes-list span{font-size:.82rem;color:var(--accent2);background:rgba(74,122,98,.08);border:1px solid rgba(74,122,98,.18);padding:3px 12px;border-radius:20px}
.ptypes-note{border-left:4px solid var(--gold)}
.ptypes-note h4{font-family:var(--serif);font-size:1.15rem;color:var(--ink);margin-bottom:var(--sp-3)}
.ptypes-note h4 em{font-style:normal;margin-right:6px}
.ptypes-note p{font-size:.95rem;color:var(--text-light);line-height:1.9;margin:0 0 var(--sp-2);letter-spacing:.04em}
.ptypes-note .ptypes-fine{font-size:.8rem;color:var(--text-muted);border-top:1px dashed var(--border);padding-top:var(--sp-2);margin:0}
@media(max-width:980px){.ptypes-stats{grid-template-columns:1fr 1fr}.ptypes-grid{grid-template-columns:1fr}}
@media(max-width:680px){.ptypes-stats{grid-template-columns:1fr 1fr}}

/* ========== Gallery ========== */
.gallery-tabs{display:flex;justify-content:center;gap:var(--sp-3);margin-bottom:var(--sp-7);flex-wrap:wrap}
.tab-btn{padding:10px 24px;border:1px solid rgba(224,213,200,.85);background:rgba(253,250,244,.92);border-radius:30px;font-size:var(--fs-sm);color:var(--text-light);cursor:pointer;transition:all .3s;font-family:var(--sans);letter-spacing:var(--ls-normal);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.tab-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(253,250,244,.98)}
.tab-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-5);position:relative}
.gallery-card{overflow:hidden;transition:opacity .4s ease,transform .4s ease,box-shadow .3s;cursor:pointer;opacity:1;transform:scale(1)}
.gallery-card.hide{opacity:0;transform:scale(.9);pointer-events:none;position:absolute;width:0;height:0;margin:0;padding:0;overflow:hidden;border:0}
.gallery-card:not(.hide):hover{transform:translateY(-8px);box-shadow:0 16px 40px var(--shadow-md)}
.card-img{height:180px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}
.card-pattern{position:absolute;inset:0;opacity:.3}
.flower-pattern{background:radial-gradient(circle at 30% 40%,rgba(200,85,61,.3) 0%,transparent 50%),radial-gradient(circle at 70% 60%,rgba(212,165,116,.3) 0%,transparent 50%)}
.leaf-pattern{background:radial-gradient(circle at 50% 30%,rgba(76,175,80,.3) 0%,transparent 50%),radial-gradient(circle at 30% 70%,rgba(56,142,60,.2) 0%,transparent 50%)}
.dragon-pattern{background:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(255,255,255,.05) 10px,rgba(255,255,255,.05) 20px)}
.wave-pattern{background:radial-gradient(circle at 50% 50%,rgba(255,215,0,.4) 0%,transparent 60%)}
.texture-pattern{background:url("data:image/svg+xml,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='1' fill='rgba(0,0,0,0.05)'/%3E%3C/svg%3E")}
.lantern-pattern{background:radial-gradient(circle at 50% 50%,rgba(255,160,0,.2) 0%,transparent 50%)}
.envelope-pattern{background:linear-gradient(135deg,transparent 40%,rgba(156,39,176,.1) 50%,transparent 60%)}
.fan-pattern{background:conic-gradient(from 0deg,transparent,rgba(0,150,136,.1) 30deg,transparent 60deg)}
.card-label{position:absolute;top:var(--sp-3);left:var(--sp-3);background:rgba(0,0,0,.5);color:#fff;font-size:var(--fs-xs);padding:4px 12px;border-radius:20px;letter-spacing:var(--ls-normal);backdrop-filter:blur(4px);z-index:2}
.card-body{padding:var(--sp-5)}
.card-body h4{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:var(--sp-2)}
.card-body p{font-size:var(--fs-sm);color:var(--text-light);line-height:var(--lh-normal);margin-bottom:var(--sp-3)}
.card-tags{display:flex;gap:var(--sp-2);flex-wrap:wrap}
.card-tags span{font-size:var(--fs-xs);color:var(--accent);background:rgba(200,85,61,.08);padding:3px 10px;border-radius:20px}

/* ========== Artisan ========== */
.artisan-section{max-width:1240px;margin:var(--sp-9) auto 0;padding:0 24px}
.artisan-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-6)}
.artisan-card{display:flex;gap:var(--sp-6)}
.artisan-info{flex:1}
.artisan-badge{display:inline-block;background:var(--accent);color:#fff;font-size:var(--fs-xs);padding:4px 14px;border-radius:20px;margin-bottom:var(--sp-3);letter-spacing:var(--ls-normal)}
.artisan-info h4{font-family:var(--serif);font-size:var(--fs-h3);color:var(--ink);margin-bottom:var(--sp-1)}
.artisan-role{font-size:1.0625rem;color:var(--accent);margin-bottom:var(--sp-3)}
.artisan-info p{font-size:1.0625rem;color:var(--text-light);line-height:var(--lh-loose);margin-bottom:var(--sp-4)}
.artisan-tags{display:flex;gap:var(--sp-2);flex-wrap:wrap}
.artisan-tags span{font-size:var(--fs-xs);color:var(--accent3);background:rgba(141,110,76,.1);padding:4px 12px;border-radius:20px}

/* ========== Fieldwork ========== */
.fieldwork-overview{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-5);margin-bottom:var(--sp-7)}
.fw-stat-card{text-align:center}
.fw-stat-num{font-family:var(--serif);font-size:2.5rem;font-weight:900;color:var(--accent);margin-bottom:var(--sp-1);line-height:1.2}
.fw-stat-label{font-size:.95rem;font-weight:600;color:var(--ink);margin-bottom:4px}
.fw-stat-detail{font-size:.78rem;color:var(--text-light)}

.fw-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5);margin-bottom:var(--sp-7)}
.fw-photo-card{border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--card-shadow);transition:all .3s;cursor:pointer;background:var(--paper)}
.fw-photo-card:hover{transform:translateY(var(--card-hover-y));box-shadow:0 8px 24px var(--shadow-md)}
.fw-photo-card .fw-photo-img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;margin:0;max-height:none;border-radius:0;transition:transform .35s ease}
.fw-photo-card .fw-photo-img:hover{transform:scale(1.03)}
.fw-photo-caption{padding:10px 14px 12px;font-size:var(--fs-sm);color:var(--text);text-align:center;background:rgba(248,244,239,.86);font-family:var(--serif);letter-spacing:.05em}
.fw-photo-placeholder{height:200px;background:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(200,85,61,.03) 10px,rgba(200,85,61,.03) 20px);border:2px dashed var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2)}
.fw-ph-icon{font-size:2rem;color:var(--text-muted)}
.fw-photo-placeholder span{font-size:1.0625rem;color:var(--text-muted)}

.fieldwork-interviews{margin-bottom:var(--sp-7)}
.interview-grid{display:grid;grid-template-columns:1fr;gap:var(--sp-5)}
.interview-card{border-left:4px solid var(--accent)}
.interview-speaker{display:flex;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-4)}
.speaker-avatar{width:40px;height:40px;color:var(--accent);flex-shrink:0}
.speaker-avatar svg{width:100%;height:100%}
.interview-speaker strong{display:block;font-family:var(--serif);font-size:1.25rem;color:var(--ink)}
.interview-speaker span{font-size:1rem;color:var(--text-light)}
.interview-card blockquote{font-size:1.125rem;color:var(--text-light);line-height:1.85;font-style:italic;padding-left:var(--sp-4);border-left:2px solid var(--border);margin-bottom:var(--sp-2)}
/* 采访总结卡片 */
.interview-summary-card{border-left:4px solid var(--gold);background:linear-gradient(135deg,rgba(212,165,116,.06),rgba(248,244,239,.8))}
.summary-content p{margin-bottom:var(--sp-3);line-height:1.75;font-size:.95rem;color:var(--text-light)}
.summary-content p:last-child{margin-bottom:0}
.summary-content strong{color:var(--ink)}

.fieldwork-data{}
.data-viz-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}
.data-card h4{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:var(--sp-5)}

/* Bar Chart */
.bar-chart{display:flex;flex-direction:column;gap:var(--sp-3)}
.bar-row{display:flex;align-items:center;gap:var(--sp-3)}
.bar-label{font-size:var(--fs-sm);color:var(--text-light);min-width:90px;text-align:right}
.bar-track{flex:1;height:24px;background:var(--bg);border-radius:var(--radius-md);overflow:hidden;position:relative}
.bar-fill{height:100%;background:var(--accent);border-radius:var(--radius-md);transition:width 1s ease}
.bar-fill.accent{background:var(--accent2)}
.bar-fill.green{background:#8d9e7c}
.bar-val{font-size:var(--fs-sm);font-weight:600;color:var(--ink);min-width:36px}
.data-source{margin-top:var(--sp-3);padding:10px 16px;background:linear-gradient(135deg,rgba(212,165,116,.06),rgba(200,85,61,.04));border-radius:var(--radius-sm);font-size:.72rem;color:var(--text-muted);line-height:1.6;display:flex;align-items:flex-start;gap:6px;border:1px solid rgba(212,165,116,.1)}
.data-source::before{content:"📎";flex-shrink:0;font-size:.75rem;opacity:.6}
/* 数据来源/说明中的外链：明确可点击样式 + 外链标识 */
.data-source a,.craft-sub a,.isd-list a,.img-source-decl a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;font-weight:500;transition:color .2s}
.data-source a:hover,.craft-sub a:hover,.isd-list a:hover,.img-source-decl a:hover{color:#a8432f}
.data-source a::after,.craft-sub a::after,.isd-list a::after,.img-source-decl a::after{content:" \2197";font-size:.8em;opacity:.65;font-weight:400}

/* Donut Chart */
.donut-chart{display:flex;align-items:center;gap:var(--sp-5);flex-wrap:wrap;justify-content:center}
.donut-chart svg{width:160px;height:160px;flex-shrink:0}
.donut-legend{display:flex;flex-direction:column;gap:var(--sp-2)}
.donut-legend span{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--text-light)}
.donut-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;flex-shrink:0}

/* ========== Revival ========== */
.revival-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}
.panel-full{grid-column:1/-1}
.panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-5);padding-bottom:var(--sp-4);border-bottom:1px solid var(--border)}
.panel-header h3{font-family:var(--serif);font-size:var(--fs-h3);color:var(--ink);position:relative;padding-left:var(--sp-4)}
.panel-header h3::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--accent);border-radius:2px}
.panel-icon{font-size:var(--fs-h4);color:var(--accent)}
.panel-desc{font-size:var(--fs-sm);color:var(--text-light);line-height:1.75;margin-bottom:var(--sp-5);padding:var(--sp-4);background:rgba(200,85,61,.04);border-radius:var(--radius-sm);border-left:3px solid var(--accent2)}
.text-accent{color:var(--accent);font-weight:600}
.id-showcase{display:flex;flex-direction:column;gap:var(--sp-5)}
.id-item{text-align:center}
.id-preview{height:80px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;margin-bottom:var(--sp-2);box-shadow:0 2px 10px var(--shadow)}
.id-label{font-size:var(--fs-sm);color:var(--text-light)}
.id-subsection{margin-top:var(--sp-6);padding-top:var(--sp-5);border-top:1px dashed rgba(212,165,116,.35)}
.id-sub-title{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:var(--sp-2);display:flex;align-items:center;gap:var(--sp-2)}
.id-sub-title::before{content:'';display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;flex-shrink:0}
.id-sub-desc{font-size:var(--fs-sm);color:var(--text-light);line-height:1.75;margin-bottom:var(--sp-4);padding:var(--sp-3);background:rgba(212,165,116,.06);border-radius:var(--radius-sm);border-left:2px solid var(--accent2)}
.id-scene-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3)}
.id-scene-card{padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-sm);background:rgba(253,250,244,.6);text-align:center;transition:all .35s cubic-bezier(.2,.8,.3,1)}
.id-scene-card:hover{border-color:var(--accent);background:rgba(200,85,61,.04);transform:translateY(-3px);box-shadow:0 6px 18px var(--shadow-md)}
.id-scene-icon{width:40px;height:40px;margin:0 auto var(--sp-2);color:var(--accent)}
.id-scene-icon svg{width:100%;height:100%}
.id-scene-name{font-family:var(--serif);font-size:var(--fs-base);color:var(--ink);font-weight:600;margin-bottom:2px}
.id-scene-tag{font-size:11px;color:var(--accent);letter-spacing:.05em;margin-bottom:var(--sp-2)}
.id-scene-color{display:flex;justify-content:center;gap:4px}
.id-scene-color span{width:14px;height:14px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.ai-path{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr auto 1fr;gap:var(--sp-2);align-items:stretch;margin-top:var(--sp-3)}
.ai-path-step{padding:var(--sp-3);background:linear-gradient(135deg,rgba(253,250,244,.7),rgba(248,244,239,.55));border:1px solid rgba(212,165,116,.3);border-radius:var(--radius-sm);position:relative;backdrop-filter:blur(4px);transition:all .35s}
.ai-path-step:hover{border-color:var(--accent);background:linear-gradient(135deg,rgba(200,85,61,.06),rgba(212,165,116,.08));transform:translateY(-2px)}
.ai-step-num{font-family:var(--serif);font-size:var(--fs-h3);color:var(--accent);font-weight:600;line-height:1;margin-bottom:var(--sp-2);opacity:.85}
.ai-step-name{font-family:var(--serif);font-size:var(--fs-sm);color:var(--ink);font-weight:600;margin-bottom:var(--sp-1)}
.ai-step-desc{font-size:11px;color:var(--text-light);line-height:1.6}
.ai-path-arrow{color:var(--accent2);font-size:18px;align-self:center;opacity:.7;font-weight:300}
@media(max-width:980px){.ai-path{grid-template-columns:1fr;gap:var(--sp-2)}.ai-path-arrow{display:none}}
@media(max-width:680px){.id-scene-grid{grid-template-columns:1fr 1fr}}
.creative-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}
.creative-card{text-align:center;padding:var(--sp-5);border:1px solid var(--border)}
.creative-card:hover{border-color:var(--accent2);background:rgba(200,85,61,.03)}
.creative-icon{color:var(--accent);margin-bottom:var(--sp-2)}
.creative-icon svg{width:40px;height:40px}
.creative-card h4{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:var(--sp-2)}
.creative-card p{font-size:var(--fs-sm);color:var(--text-light);line-height:var(--lh-normal)}
.classroom-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4)}
.class-card{text-align:center;padding:var(--sp-6) var(--sp-4);border:1px solid rgba(224,213,200,.85);position:relative;background:rgba(253,250,244,.92);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.class-card:hover{border-color:var(--accent);background:rgba(253,250,244,.98);transform:translateY(var(--card-hover-y))}
.class-num{font-family:var(--serif);font-size:1.75rem;font-weight:900;color:var(--accent);opacity:.2;margin-bottom:var(--sp-2)}
.class-card h4{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:var(--sp-2)}
.class-card p{font-size:var(--fs-sm);color:var(--text-light);line-height:var(--lh-normal);margin-bottom:var(--sp-3)}
.class-duration{display:inline-block;font-size:var(--fs-xs);color:var(--accent);background:rgba(200,85,61,.1);padding:3px 12px;border-radius:20px}

/* ========== Tour ========== */
.map-container{max-width:920px;margin:0 auto var(--sp-7);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 8px 30px var(--shadow-md)}
.tour-map{width:100%;height:auto;display:block}
.map-point{cursor:pointer;transition:transform .3s ease,opacity .3s ease}
.map-point:hover{transform:scale(1.08)}
.tour-info-panel{max-width:920px;margin:0 auto var(--sp-7);background:rgba(253,250,244,.94);border-radius:var(--radius-md);padding:var(--sp-5) var(--sp-6);box-shadow:var(--card-shadow);border-left:4px solid var(--accent);transition:transform .4s ease,box-shadow .4s ease;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid rgba(224,213,200,.85);border-left-width:4px}
.tour-info-panel.active{transform:translateY(-4px);box-shadow:0 12px 32px rgba(44,24,16,.12)}
.tour-info-content h4{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:var(--sp-2);transition:opacity .25s ease}
.tour-info-content p{font-size:var(--fs-sm);color:var(--text-light);line-height:var(--lh-loose);transition:opacity .25s ease .08s}
.tour-cards{max-width:920px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5)}
.tour-card-item{text-align:center}
.tour-card-item h4{font-family:var(--serif);font-size:var(--fs-h4);color:var(--ink);margin-bottom:var(--sp-2)}
.tour-card-item p{font-size:var(--fs-sm);color:var(--text-light);line-height:var(--lh-normal)}

/* ========== About ========== */
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}
.about-card h3{font-family:var(--serif);font-size:var(--fs-h3);color:var(--ink);margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:2px solid var(--border);position:relative}
.about-card h3::after{content:'';position:absolute;bottom:-2px;left:0;width:40px;height:2px;background:var(--accent)}
.about-card p,.about-card li{font-size:var(--fs-sm);color:var(--text-light);line-height:1.75}
.about-card ul{list-style:none;padding:0}
.about-card li{padding:var(--sp-2) 0;padding-left:var(--sp-5);position:relative}
.about-card li::before{content:'';position:absolute;left:0;top:14px;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.team-list{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-4)}
.team-member{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:rgba(248,244,239,.7);border-radius:var(--radius-sm);border:1px solid rgba(224,213,200,.5)}
.tm-name{font-weight:600;color:var(--ink);font-size:var(--fs-sm);min-width:60px}
.tm-role{font-size:var(--fs-sm);color:var(--text-light)}
.advisor-list{display:flex;flex-direction:column;gap:var(--sp-1)}
.advisor-list span{font-size:var(--fs-sm);color:var(--accent3);padding:var(--sp-1) 0}
.cert-placeholder{height:80px;background:repeating-linear-gradient(45deg,transparent,transparent 8px,rgba(200,85,61,.04) 8px,rgba(200,85,61,.04) 16px);border:2px dashed var(--border);border-radius:var(--radius-sm);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-1);margin-bottom:var(--sp-3)}
.cert-ph-icon{font-size:1.5rem;color:var(--text-muted)}
.cert-placeholder span{font-size:var(--fs-sm);color:var(--text-muted)}

/* ========== Reveal Animation ========== */
/* 性能优化(2026-09)：去掉初始 blur 与 will-change:filter，减少滤镜合成层（纯 transform/opacity 走合成器） */
.reveal{opacity:0;transform:translateY(24px) scale(.96);transition:opacity .7s ease,transform .7s cubic-bezier(.22,.61,.36,1);will-change:opacity,transform}
.reveal.visible{opacity:1;transform:translateY(0) scale(1)}
.animate-in{opacity:0;transform:translateY(30px);animation:fadeSlideUp .8s ease forwards}
.animate-in:nth-child(2){animation-delay:.2s}
.animate-in:nth-child(3){animation-delay:.4s}
.animate-in:nth-child(4){animation-delay:.6s}
.animate-in:nth-child(5){animation-delay:.8s}
.animate-in:nth-child(6){animation-delay:1s}
@keyframes fadeSlideUp{to{opacity:1;transform:translateY(0)}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}

/* ========== Responsive ========== */
@media(max-width:1024px){
    :root{--fs-h1:clamp(1.75rem,5vw,2.4rem);--fs-h2:1.4rem;--fs-h3:1.2rem;--card-pad:24px}
    .craft-grid{grid-template-columns:repeat(2,1fr)}
    .gallery-grid{grid-template-columns:repeat(2,1fr)}
    .classroom-grid{grid-template-columns:repeat(2,1fr)}
    .about-grid{grid-template-columns:1fr}
    .overview-grid{grid-template-columns:repeat(2,1fr)}
    .highlights-bar{grid-template-columns:repeat(2,1fr)}
    .fieldwork-overview{grid-template-columns:repeat(2,1fr)}
    .data-viz-grid{grid-template-columns:1fr}
    .craft-extra{grid-template-columns:1fr}
    .overview-section{padding:var(--sp-8) 24px}
    .page-body{padding:var(--sp-7) 24px var(--sp-8)}
    .hero-content{max-width:480px}
    /* 平板时间线适配 */
    .timeline{max-width:100%;padding-left:16px;padding-right:16px}
    .tl-image{width:130px;min-height:150px}
    .tl-year{font-size:1.3rem}
    .tl-card h3{font-size:1.15rem}
    .tl-card p{font-size:var(--fs-sm);line-height:1.75}
}
@media(max-width:768px){
    :root{--fs-h1:clamp(1.6rem,5vw,2rem);--fs-h2:1.25rem;--fs-h3:1.1rem;--fs-h4:1rem;--card-pad:20px;--sp-7:32px;--sp-9:64px}
    .timeline-line{left:20px}
    .tl-item{width:100%;left:0!important;text-align:left!important;padding-left:50px;padding-right:var(--sp-4)}
    .tl-item::before{left:12px!important;right:auto!important}
    .tl-icon{margin-left:0!important}
    .tl-card{flex-direction:column}
    .tl-image{width:100%;min-height:140px}
    .tl-year{font-size:1.2rem}
    .tl-year::after,.tl-year::before{display:none!important}
    .tl-card h3{font-size:1.1rem}
    .tl-card p{font-size:var(--fs-sm);line-height:1.7;text-align:left}
    .craft-grid{grid-template-columns:1fr}
    .gallery-grid{grid-template-columns:1fr 1fr}
    .artisan-grid{grid-template-columns:1fr}
    .artisan-card{flex-direction:column;align-items:center;text-align:center}
    .revival-grid{grid-template-columns:1fr}
    .creative-grid{grid-template-columns:1fr}
    .classroom-grid{grid-template-columns:1fr}
    .tour-cards{grid-template-columns:1fr}
    .hero-section{justify-content:center;padding-left:0}
    .hero-content{padding:8vh var(--sp-4) 0;align-self:flex-start;max-width:min(560px,92vw)}
    .hero-gradient{background:linear-gradient(180deg,rgba(16,10,6,.78) 0%,rgba(20,15,10,.32) 42%,rgba(28,20,14,.62) 78%,rgba(28,20,14,.92) 100%)}
    .hero-badge{position:absolute;top:clamp(54px,9vh,82px);left:50%;transform:translateX(-50%);white-space:nowrap;padding:6px 16px}
    .hero-badge span{font-size:.72rem}
    .overview-grid{grid-template-columns:1fr}
    .highlights-bar{grid-template-columns:1fr}
    .fieldwork-overview{grid-template-columns:1fr 1fr}
    .fw-photo-grid{grid-template-columns:1fr 1fr}
    .interview-grid{grid-template-columns:1fr}
    .page-topbar{padding:90px var(--sp-4) var(--sp-6)}
    .page-body{padding:var(--sp-6) var(--sp-4) var(--sp-7)}
    .hero-quicknav{margin-top:var(--sp-5);max-width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px;-webkit-overflow-scrolling:touch}
    .qn-item{flex:0 0 auto}
    .overview-section{padding:var(--sp-7) var(--sp-4)}
    .next-chapter-btn{padding:var(--sp-5)}
    .nc-title{font-size:1.15rem}
}
@media(prefers-reduced-motion:reduce){
    *{animation-duration:0.01ms!important;transition-duration:0.01ms!important}
    .reveal{opacity:1;transform:none;filter:none}
}

/* ========== 水墨晕染过渡层 ========== */
#ink-transition{position:fixed;inset:0;z-index:9998;pointer-events:none;opacity:0;visibility:hidden}
#ink-transition.active{opacity:1;visibility:visible}
#ink-transition.fading{opacity:0;transition:opacity .5s ease}
.ink-layer{position:absolute;inset:0;clip-path:circle(0 at var(--ox,50%) var(--oy,50%));transition:clip-path .38s cubic-bezier(.4,0,.2,1);will-change:clip-path}
#ink-transition.active .ink-layer{clip-path:circle(150vmax at var(--ox,50%) var(--oy,50%))}
#ink-transition.fading .ink-layer{transition:opacity .5s ease;opacity:0}
.ink-layer-base{background:radial-gradient(circle at 45% 45%,#2c1810 0%,#1a0f08 80%)}
.ink-layer-red{background:radial-gradient(circle at 35% 40%,rgba(200,85,61,.55) 0%,transparent 55%);mix-blend-mode:screen}
.ink-layer-gold{background:radial-gradient(circle at 65% 60%,rgba(212,165,116,.4) 0%,transparent 50%);mix-blend-mode:screen}
.ink-splash-canvas{position:absolute;inset:0;width:100%;height:100%}
.ink-seal{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);font-family:var(--serif);font-size:5rem;font-weight:900;color:rgba(255,255,255,.15);opacity:0;transition:all .8s ease .2s}
#ink-transition.active .ink-seal{transform:translate(-50%,-50%) scale(1);opacity:1}
#ink-transition.fading .ink-seal{opacity:0;transform:translate(-50%,-50%) scale(1.3)}

/* ========== Hero VR 入口按钮 ========== */
.hero-cta{margin:8px 0 6px;text-align:center}
.hero-cta-wrap{display:inline-flex;align-items:center;gap:10px}
.hero-vr-btn{
    display:inline-flex;align-items:center;gap:10px;position:relative;overflow:hidden;
    padding:16px 30px 16px 24px;font-size:1rem;font-weight:600;font-family:var(--serif);
    background:linear-gradient(135deg,#c8553d 0%,#a8392a 100%);color:#fff;border:none;cursor:pointer;
    border-radius:32px;letter-spacing:.06em;
    box-shadow:0 10px 28px rgba(200,85,61,.36),inset 0 1px 0 rgba(255,255,255,.18);
    transition:transform .3s,box-shadow .3s;
    animation:vrBreath 3.5s ease-in-out infinite;
}
.hero-vr-btn:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 16px 34px rgba(200,85,61,.45)}
.hero-vr-btn .vr-btn-icon{width:22px;height:22px;filter:drop-shadow(0 0 6px rgba(255,255,255,.5));transition:transform .3s;animation:vrIconBreath 3.5s ease-in-out infinite}
.hero-vr-btn:hover .vr-btn-icon{transform:rotate(-12deg) scale(1.08)}
.hero-vr-btn .vr-badge{padding:3px 9px;background:rgba(255,255,255,.18);border-radius:12px;font-size:.66rem;letter-spacing:.16em;margin-left:4px;font-weight:700;color:#fff}
.hero-vr-btn .vr-ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.55);width:0;height:0;transform:translate(-50%,-50%);pointer-events:none;left:50%;top:50%}
.hero-vr-btn:active .vr-ripple{animation:btnRipple .55s ease-out}
@keyframes btnRipple{0%{width:0;height:0;opacity:.6}100%{width:380px;height:380px;opacity:0}}
@keyframes vrBreath{
    0%,100%{box-shadow:0 10px 28px rgba(200,85,61,.36),inset 0 1px 0 rgba(255,255,255,.18),0 0 0 0 rgba(200,85,61,0)}
    50%{box-shadow:0 14px 36px rgba(200,85,61,.55),inset 0 1px 0 rgba(255,255,255,.22),0 0 50px 8px rgba(200,85,61,.35)}
}
@keyframes vrIconBreath{
    0%,100%{filter:drop-shadow(0 0 4px rgba(255,255,255,.4))}
    50%{filter:drop-shadow(0 0 9px rgba(255,210,180,.85))}
}

/* VR 按钮右侧 ⓘ 帮助按钮 + 浅米黄宣纸 tooltip */
.vr-help{
    position:relative;width:30px;height:30px;border-radius:50%;
    border:1px solid rgba(200,85,61,.32);background:rgba(255,255,255,.65);
    color:var(--accent);font-family:var(--sans);font-size:14px;font-weight:700;
    cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
    -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
    box-shadow:0 4px 14px rgba(200,85,61,.18);flex-shrink:0;line-height:1;
    transition:all .25s ease;
}
.vr-help:hover{
    background:var(--accent);color:#fff;border-color:var(--accent);
    transform:scale(1.06);box-shadow:0 6px 18px rgba(200,85,61,.4);
}
.vr-help[data-tip]::after{
    content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 12px);
    transform:translateX(-50%) translateY(6px);
    background:rgba(248,244,239,.96);color:var(--ink);
    font-size:.78rem;white-space:nowrap;padding:8px 14px;
    border:1px solid var(--accent);border-radius:10px;
    box-shadow:0 6px 20px rgba(44,24,16,.18);
    opacity:0;pointer-events:none;transition:all .25s ease;
    font-family:var(--sans);letter-spacing:.02em;z-index:20;
}
.vr-help[data-tip]::before{
    content:'';position:absolute;left:50%;bottom:calc(100% + 6px);
    transform:translateX(-50%) translateY(6px) rotate(45deg);
    width:8px;height:8px;background:rgba(248,244,239,.96);
    border-right:1px solid var(--accent);border-bottom:1px solid var(--accent);
    opacity:0;pointer-events:none;transition:all .25s ease;z-index:21;
}
.vr-help[data-tip]:hover::after{opacity:1;transform:translateX(-50%) translateY(0)}
.vr-help[data-tip]:hover::before{opacity:1;transform:translateX(-50%) translateY(0) rotate(45deg)}

/* ========== 技艺溯源入口按钮区 ========== */
.craft-entry{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:900px;margin:0 auto 56px}
.craft-entry-btn{display:flex;align-items:center;gap:16px;background:rgba(253,250,244,.94);border:2px solid rgba(224,213,200,.85);border-radius:16px;padding:20px 24px;cursor:pointer;transition:all .4s;text-align:left;font-family:var(--sans);color:inherit;position:relative;overflow:hidden;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.craft-entry-btn::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(200,85,61,.06),transparent 50%);opacity:0;transition:opacity .3s}
.craft-entry-btn:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 12px 30px var(--shadow-md)}
.craft-entry-btn:hover::before{opacity:1}
.craft-explore-entry:hover{background:linear-gradient(135deg,var(--card),rgba(200,85,61,.04))}
.craft-vr-entry:hover{background:linear-gradient(135deg,var(--card),rgba(212,165,116,.06))}
.ce-icon{width:48px;height:48px;color:var(--accent);flex-shrink:0;background:rgba(200,85,61,.08);border-radius:12px;display:flex;align-items:center;justify-content:center;transition:all .3s}
.craft-vr-entry .ce-icon{color:var(--accent2);background:rgba(212,165,116,.1)}
.craft-entry-btn:hover .ce-icon{transform:scale(1.1) rotate(5deg)}
.ce-icon svg{width:28px;height:28px}
.ce-text{flex:1;display:flex;flex-direction:column;gap:2px}
.ce-text strong{font-family:var(--serif);font-size:1rem;color:var(--ink);font-weight:600}
.ce-text em{font-size:.78rem;color:var(--text-light);font-style:normal}
.ce-arrow{font-size:1.4rem;color:var(--accent);opacity:0;transform:translateX(-8px);transition:all .3s}
.craft-entry-btn:hover .ce-arrow{opacity:1;transform:translateX(0)}

/* ========== 下一章节引导按钮 ========== */
.next-chapter-wrap{max-width:900px;margin:80px auto 0;padding:0 24px}
.next-chapter-btn{display:flex;align-items:center;justify-content:space-between;width:100%;background:linear-gradient(135deg,var(--bg-dark) 0%,#2c1810 100%);color:#fff;border:none;border-radius:20px;padding:32px 40px;cursor:pointer;position:relative;overflow:hidden;transition:all .4s;font-family:var(--sans);text-align:left}
.next-chapter-btn::before{content:'';position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 0L30 60M0 30L60 30' stroke='rgba(212,165,116,0.06)' stroke-width='1'/%3E%3C/svg%3E");opacity:.6}
.next-chapter-btn:hover{transform:translateY(-4px);box-shadow:0 16px 40px rgba(44,24,16,.4)}
.nc-bg{position:absolute;inset:0;background:radial-gradient(circle at 80% 50%,rgba(200,85,61,.25) 0%,transparent 50%);opacity:.5;transition:opacity .4s}
.next-chapter-btn:hover .nc-bg{opacity:1}
.nc-content{position:relative;z-index:1;display:flex;flex-direction:column;gap:6px}
.nc-label{font-size:.72rem;letter-spacing:.3em;color:var(--accent);text-transform:uppercase;font-weight:600}
.nc-title{font-family:var(--serif);font-size:1.8rem;font-weight:700;color:#fff;letter-spacing:.1em}
.nc-desc{font-size:.85rem;color:rgba(255,245,235,.65)}
.nc-arrow{position:relative;z-index:1;font-size:2rem;color:var(--accent);font-family:var(--serif);transition:transform .3s}
.next-chapter-btn:hover .nc-arrow{transform:translateX(8px)}
/* 左箭头（前往上一模块） */
.nc-prev{position:relative;z-index:1;display:flex;align-items:center;gap:6px;font-size:.78rem;color:rgba(255,245,235,.5);cursor:pointer;transition:color .3s;flex-shrink:0}
.nc-prev:hover{color:var(--accent)}
.nc-prev-arrow{font-size:1.4rem;font-family:var(--serif);transition:transform .3s;display:inline-block}
.nc-prev:hover .nc-prev-arrow{transform:translateX(-4px)}
.nc-home .nc-title{color:var(--accent2)}
.nc-home .nc-label{color:var(--accent2)}

/* 启程 CTA 已移除 */

/* ========== VR 容器 ========== */
#vr-container{position:fixed;inset:0;z-index:9000;background:#000;display:none;opacity:0;transition:opacity .4s}
#vr-container.show{display:block;opacity:1}
#vr-container canvas{display:block;width:100%;height:100%}
.vr-close-btn{position:absolute;top:20px;right:20px;z-index:10;background:rgba(0,0,0,.6);color:#fff;border:1px solid rgba(255,255,255,.2);padding:10px 20px;border-radius:30px;font-size:.9rem;cursor:pointer;backdrop-filter:blur(8px);transition:all .3s;font-family:var(--sans)}
.vr-close-btn:hover{background:rgba(200,85,61,.8);border-color:var(--accent)}
.vr-enter-btn{position:absolute;top:20px;left:20px;z-index:10;background:linear-gradient(135deg,var(--accent),#a83d28);color:#fff;border:none;padding:12px 24px;border-radius:30px;font-size:.9rem;font-weight:600;cursor:pointer;backdrop-filter:blur(8px);box-shadow:0 4px 20px rgba(200,85,61,.5);transition:all .3s;animation:vrBadgeGlow 2s ease infinite;font-family:var(--sans)}
.vr-enter-btn:hover{transform:scale(1.05)}
.vr-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:10;background:rgba(0,0,0,.6);color:rgba(255,255,255,.85);padding:10px 24px;border-radius:30px;font-size:.82rem;backdrop-filter:blur(8px);letter-spacing:.05em;pointer-events:none}
.vr-info-panel{position:absolute;right:24px;top:80px;z-index:10;background:rgba(248,244,239,.96);backdrop-filter:blur(12px);border-radius:16px;padding:24px 28px;max-width:340px;box-shadow:0 12px 40px rgba(0,0,0,.4);border-left:4px solid var(--accent);transform:translateX(120%);transition:transform .4s cubic-bezier(.4,0,.2,1);opacity:0}
.vr-info-panel.show{transform:translateX(0);opacity:1}
.vr-info-head{display:flex;align-items:center;gap:14px;margin-bottom:12px;position:relative}
.vr-info-num{font-family:var(--serif);font-size:1.8rem;font-weight:900;color:var(--accent);line-height:1}
.vr-info-head h4{font-family:var(--serif);font-size:1.2rem;color:var(--ink);flex:1}
.vr-info-close{background:none;border:none;font-size:1.4rem;color:var(--text-light);cursor:pointer;padding:0 4px;line-height:1;transition:color .2s}
.vr-info-close:hover{color:var(--accent)}
.vr-info-panel p{font-size:.85rem;color:var(--text-light);line-height:1.8}
.vr-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;z-index:5}
.vr-loading-spinner{width:48px;height:48px;border:3px solid rgba(255,255,255,.15);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}
@keyframes spin{to{transform:rotate(360deg)}}
.vr-loading p{color:rgba(255,255,255,.7);font-size:.9rem;letter-spacing:.1em}
.vr-fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;text-align:center;padding:40px;z-index:5}
.vr-fallback-icon{width:80px;height:80px;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:2.5rem;font-weight:700;color:#fff;margin-bottom:24px}
.vr-fallback h3{font-family:var(--serif);font-size:1.4rem;margin-bottom:12px}
.vr-fallback p{color:rgba(255,255,255,.6);line-height:1.8;margin-bottom:8px;max-width:480px}
.vr-fallback-tip{font-size:.85rem!important;color:rgba(255,255,255,.4)!important}
.vr-fallback-alt{margin-top:16px!important;color:var(--accent2)!important;font-size:.9rem!important}

/* 控制按钮（旋转 / 音效） */
.vr-ctrl-btn{position:absolute;top:20px;left:20px;z-index:11;background:rgba(0,0,0,.55);color:#fff;border:1px solid rgba(255,255,255,.2);padding:10px 18px;border-radius:30px;font-size:.85rem;cursor:pointer;backdrop-filter:blur(8px);transition:all .3s;font-family:var(--sans)}
.vr-ctrl-btn:hover{background:rgba(200,85,61,.75);border-color:var(--accent)}
#vr-rotate-btn{left:20px}
#vr-audio-btn{left:124px}

/* 入场引导浮层 */
.vr-intro{position:absolute;inset:0;z-index:12;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,rgba(42,31,21,.55),rgba(20,15,10,.85));opacity:0;visibility:hidden;transition:opacity .6s ease,visibility .6s;pointer-events:none}
.vr-intro.show{opacity:1;visibility:visible}
.vr-intro-inner{text-align:center;color:#f8f4ef;padding:40px;max-width:480px;animation:vrIntroUp .8s ease both}
@keyframes vrIntroUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.vr-intro-inner h3{font-family:var(--serif);font-size:1.8rem;font-weight:900;margin-bottom:10px;letter-spacing:.05em}
.vr-intro-sub{font-size:.95rem;color:rgba(255,255,255,.7);margin-bottom:26px;letter-spacing:.08em}
.vr-intro-steps{list-style:none;display:inline-block;text-align:left;margin:0;padding:0}
.vr-intro-steps li{display:flex;align-items:center;gap:14px;padding:10px 0;font-size:1rem;color:rgba(255,255,255,.92);border-bottom:1px solid rgba(255,255,255,.12)}
.vr-intro-steps li:last-child{border-bottom:none}
.vr-intro-steps span{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;font-size:1rem;flex-shrink:0}

/* 底部工序导航条 */
.vr-nav{position:absolute;bottom:64px;left:50%;transform:translateX(-50%);z-index:11;display:flex;gap:8px;background:rgba(0,0,0,.5);padding:10px 14px;border-radius:40px;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.12);max-width:92vw;overflow-x:auto}
.vr-nav-btn{display:flex;flex-direction:column;align-items:center;gap:2px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);color:#f8f4ef;padding:8px 12px;border-radius:24px;cursor:pointer;transition:all .25s;font-family:var(--sans);flex-shrink:0;min-width:64px}
.vr-nav-btn:hover{background:var(--accent);border-color:var(--accent);transform:translateY(-3px)}
.vr-nav-btn .vn-num{font-family:var(--serif);font-size:1.1rem;font-weight:900;line-height:1}
.vr-nav-btn .vn-label{font-size:.72rem;opacity:.85;white-space:nowrap}

/* ========== 工艺流程探索画布 ========== */
#craft-explore-overlay{position:fixed;inset:0;z-index:9100;background:radial-gradient(ellipse at center,#2c1810 0%,#1a0f08 100%);display:none;overflow:hidden}
#craft-explore-overlay.show{display:flex;align-items:center;justify-content:center}
.craft-explore-canvas{position:relative;width:0;height:0;transform-origin:0 0;cursor:grab;will-change:transform}
.craft-explore-canvas:active{cursor:grabbing}
/* 行星环绕：SVG 容器居中 1200×1200（6 轨道最大半径 530 + 节点宽 160） */
.craft-flow-lines{position:absolute;left:-600px;top:-600px;width:1200px;height:1200px;overflow:visible;pointer-events:none}
.craft-orbit-line{fill:none;stroke:rgba(212,165,116,.22);stroke-width:1.2;stroke-dasharray:4 6;transition:stroke .6s,stroke-dasharray .6s}
.craft-orbit-line.active{stroke:rgba(200,85,61,.65);stroke-dasharray:0;filter:drop-shadow(0 0 4px rgba(200,85,61,.5))}
.craft-orbit-deco{fill:var(--accent2);filter:drop-shadow(0 0 4px var(--accent2));opacity:.7}
/* 单条轨道容器：绝对定位在画布中心 0,0 */
.craft-orbit{position:absolute;left:0;top:0;width:0;height:0;transform-origin:0 0;pointer-events:none}
/* 行星：内层做 CSS 旋转动画，外层定位在中心 0,0 */
.craft-orbit-node{position:absolute;left:0;top:0;width:160px;margin-left:-80px;margin-top:-80px;pointer-events:auto;cursor:pointer;transform-origin:50% 50%;will-change:transform}
.craft-orbit-node:hover{filter:drop-shadow(0 0 12px rgba(200,85,61,.7))}
.craft-orbit-node.active .craft-node-circle{border-color:var(--accent2);box-shadow:0 0 50px rgba(212,165,116,.6),inset 0 0 30px rgba(212,165,116,.2)}
/* 6 条不同半径的环绕动画（半径无法在 keyframes 内变，所以拆 6 条） */
@keyframes orbit-spin-1{from{transform:rotate(0deg) translateX(130px)}to{transform:rotate(360deg) translateX(130px)}}
@keyframes orbit-spin-2{from{transform:rotate(60deg) translateX(210px)}to{transform:rotate(420deg) translateX(210px)}}
@keyframes orbit-spin-3{from{transform:rotate(120deg) translateX(290px)}to{transform:rotate(480deg) translateX(290px)}}
@keyframes orbit-spin-4{from{transform:rotate(180deg) translateX(370px)}to{transform:rotate(540deg) translateX(370px)}}
@keyframes orbit-spin-5{from{transform:rotate(240deg) translateX(450px)}to{transform:rotate(600deg) translateX(450px)}}
@keyframes orbit-spin-6{from{transform:rotate(300deg) translateX(530px)}to{transform:rotate(660deg) translateX(530px)}}
.craft-orbit-1{animation:orbit-spin-1 28s linear infinite}
.craft-orbit-2{animation:orbit-spin-2 25s linear infinite}
.craft-orbit-3{animation:orbit-spin-3 22s linear infinite}
.craft-orbit-4{animation:orbit-spin-4 19s linear infinite}
.craft-orbit-5{animation:orbit-spin-5 16s linear infinite}
.craft-orbit-6{animation:orbit-spin-6 13s linear infinite}
/* 中心太阳 */
.craft-sun{position:absolute;left:0;top:0;width:200px;height:200px;margin-left:-100px;margin-top:-100px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffd6b0 0%,var(--accent) 35%,rgba(200,85,61,.5) 70%,transparent 100%);box-shadow:0 0 60px rgba(200,85,61,.7),inset 0 0 30px rgba(255,214,176,.5);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;text-align:center;padding:18px;pointer-events:auto;z-index:3;transition:transform .3s,box-shadow .3s;animation:sunPulse 3s ease-in-out infinite}
.craft-sun:hover{transform:scale(1.05);box-shadow:0 0 90px rgba(200,85,61,.9),inset 0 0 40px rgba(255,214,176,.7)}
.craft-sun-num{position:absolute;top:6px;left:50%;transform:translateX(-50%);font-family:var(--serif);font-size:.8rem;letter-spacing:.2em;color:rgba(255,255,255,.85);font-weight:600}
.craft-sun-title{font-family:var(--serif);font-size:1.25rem;font-weight:700;letter-spacing:.05em;line-height:1.3;margin-top:6px;text-shadow:0 2px 6px rgba(0,0,0,.4)}
.craft-sun-stage{font-size:.68rem;letter-spacing:.25em;opacity:.85;margin-bottom:4px}
.craft-sun-desc{font-size:.7rem;line-height:1.5;opacity:.85;margin-top:8px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.craft-sun-hint{position:absolute;bottom:-32px;left:50%;transform:translateX(-50%);font-size:.7rem;color:rgba(255,255,255,.55);letter-spacing:.1em;white-space:nowrap;pointer-events:none}
@keyframes sunPulse{0%,100%{box-shadow:0 0 60px rgba(200,85,61,.7),inset 0 0 30px rgba(255,214,176,.5)}50%{box-shadow:0 0 90px rgba(200,85,61,.95),inset 0 0 40px rgba(255,214,176,.7)}}
.craft-node{position:absolute;width:160px;cursor:pointer;transform:translate(-50%,-50%);transition:transform .3s}
.craft-node:hover{transform:translate(-50%,-50%) scale(1.08)}
.craft-node.active{transform:translate(-50%,-50%) scale(1.12)}
.craft-node-circle{position:relative;width:110px;height:110px;margin:0 auto 16px;background:linear-gradient(135deg,rgba(200,85,61,.15),rgba(200,85,61,.05));border:2px solid var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 0 30px rgba(200,85,61,.3),inset 0 0 20px rgba(200,85,61,.1)}
.craft-node.active .craft-node-circle{border-color:var(--accent2);box-shadow:0 0 50px rgba(212,165,116,.6),inset 0 0 30px rgba(212,165,116,.2)}
.craft-node-icon{width:48px;height:48px;color:var(--accent2);transition:color .3s}
.craft-node.active .craft-node-icon{color:#fff}
.craft-node-icon svg{width:100%;height:100%}
.craft-node-num{position:absolute;top:-8px;right:-8px;width:32px;height:32px;background:var(--accent);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:.85rem;font-weight:700;box-shadow:0 4px 12px rgba(200,85,61,.5)}
.craft-node-pulse{position:absolute;inset:-4px;border:2px solid var(--accent);border-radius:50%;animation:nodePulse 2s ease infinite;pointer-events:none}
@keyframes nodePulse{0%{transform:scale(1);opacity:.8}100%{transform:scale(1.4);opacity:0}}
.craft-node-label{text-align:center}
.craft-node-label h4{font-family:var(--serif);font-size:1.1rem;color:#fff;margin-bottom:4px;letter-spacing:.05em}
.craft-node-label span{font-size:.72rem;color:rgba(255,255,255,.5);display:block;line-height:1.4}

/* 工艺探索顶部栏 */
.craft-explore-header{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:20px 28px;background:linear-gradient(180deg,rgba(13,13,26,.9),transparent)}
.ceh-left{display:flex;align-items:center;gap:14px}
.ceh-tag{font-size:.72rem;letter-spacing:.3em;color:var(--accent);font-weight:600;text-transform:uppercase}
.ceh-left h3{font-family:var(--serif);font-size:1.3rem;color:#fff;letter-spacing:.1em}
.ceh-right{display:flex;align-items:center;gap:10px}
.ceh-reset,.ceh-zoom,.ceh-close{background:rgba(255,255,255,.08);color:#fff;border:1px solid rgba(255,255,255,.15);padding:8px 16px;border-radius:24px;font-size:.85rem;cursor:pointer;transition:all .3s;backdrop-filter:blur(8px);font-family:var(--sans);display:flex;align-items:center;gap:6px}
.ceh-reset:hover,.ceh-zoom:hover,.ceh-close:hover{background:rgba(200,85,61,.6);border-color:var(--accent)}
.ceh-zoom{padding:8px 12px;font-size:1.1rem}
.ceh-close{background:rgba(200,85,61,.8);border-color:var(--accent)}
.ceh-close:hover{background:var(--accent)}

/* 工艺探索底部提示 */
.craft-explore-hint{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);z-index:5;display:flex;gap:24px;background:rgba(0,0,0,.5);backdrop-filter:blur(8px);padding:10px 24px;border-radius:30px;color:rgba(255,255,255,.7);font-size:.8rem}
.craft-explore-hint span{letter-spacing:.05em}
.ceh-hint-mobile{display:none}

/* 进度指示器 */
.craft-explore-progress{position:absolute;bottom:70px;left:50%;transform:translateX(-50%);z-index:5;display:flex;align-items:center;gap:12px;background:rgba(0,0,0,.4);padding:8px 18px;border-radius:20px;backdrop-filter:blur(8px)}
.cep-bar{width:160px;height:4px;background:rgba(255,255,255,.15);border-radius:2px;overflow:hidden}
.cep-bar::after{content:'';display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:2px;transition:width .4s ease;width:16%}
.cep-text{color:rgba(255,255,255,.7);font-size:.8rem;font-family:var(--serif)}

/* 工艺探索详情面板 */
.craft-detail-panel{position:absolute;right:0;top:0;bottom:0;width:380px;max-width:90vw;background:var(--bg);z-index:6;transform:translateX(100%);transition:transform .4s cubic-bezier(.4,0,.2,1);overflow-y:auto;box-shadow:-12px 0 40px rgba(0,0,0,.5)}
.craft-detail-panel.show{transform:translateX(0)}
.craft-detail-panel::before{content:'';display:block;height:8px;background:linear-gradient(90deg,var(--accent),var(--accent2))}
.craft-detail-panel .cdp-close{position:absolute;top:16px;right:16px;background:rgba(0,0,0,.06);border:none;width:32px;height:32px;border-radius:50%;font-size:1.4rem;color:var(--text-light);cursor:pointer;transition:all .2s}
.craft-detail-panel .cdp-close:hover{background:var(--accent);color:#fff;transform:rotate(90deg)}
.craft-detail-panel .cdp-head{display:flex;align-items:center;gap:16px;padding:28px 28px 20px}
.cdp-num{font-family:var(--serif);font-size:2.4rem;font-weight:900;color:var(--accent);line-height:1}
.cdp-head>div:last-child{flex:1}
.cdp-stage{font-size:.72rem;letter-spacing:.2em;color:var(--text-muted);text-transform:uppercase}
.cdp-head h4{font-family:var(--serif);font-size:1.4rem;color:var(--ink);margin-top:4px}
.cdp-param{margin:0 28px 20px;padding:14px 18px;background:rgba(200,85,61,.06);border-left:3px solid var(--accent);border-radius:0 8px 8px 0;font-size:.85rem;color:var(--accent3);font-weight:500;line-height:1.6}
.cdp-section{padding:0 28px 20px}
.cdp-section h5{font-family:var(--serif);font-size:.95rem;color:var(--ink);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--border)}
.cdp-section p{font-size:.88rem;color:var(--text-light);line-height:1.9}
.cdp-highlight{background:rgba(212,165,116,.06);padding:20px 28px;margin:0 0 24px;border-radius:12px}
.cdp-highlight h5{color:var(--accent3)}
.cdp-highlight p{color:var(--text)}
.cdp-nav{display:flex;justify-content:space-between;padding:0 28px 28px;gap:12px}
.cdp-prev,.cdp-next{background:var(--card);border:1px solid var(--border);color:var(--ink);padding:10px 18px;border-radius:24px;font-size:.85rem;cursor:pointer;transition:all .3s;font-family:var(--sans)}
.cdp-prev:hover,.cdp-next:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.cdp-next{margin-left:auto}

/* ========== 纸上工坊（工序闯关游戏） ========== */
.game-topbar{background:linear-gradient(180deg,rgba(31,18,8,.86) 0%,rgba(31,18,8,.62) 70%,rgba(31,18,8,.28) 100%);padding:96px 24px 56px;text-align:center;position:relative;overflow:hidden;backdrop-filter:blur(2px)}
.game-topbar::before{content:'';position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 0L30 60M0 30L60 30' stroke='rgba(212,165,116,0.04)' stroke-width='1'/%3E%3C/svg%3E");opacity:.4}
.game-body{padding:40px 24px 80px;max-width:1000px;margin:0 auto;min-height:calc(100vh - 220px)}
/* 游戏占位（新游戏待上线） */
.game-placeholder-wrap{display:flex;align-items:center;justify-content:center;min-height:400px}
.game-ph-inner{text-align:center;padding:var(--sp-8) var(--sp-6);max-width:560px}

/* 游戏屏幕容器 */
.game-screen{animation:gameFadeIn .5s ease}
@keyframes gameFadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

/* 开始界面 */
.game-start-inner{text-align:center;padding:48px 32px;max-width:560px;margin:0 auto;background:rgba(253,250,244,.94);border:1px solid rgba(224,213,200,.85);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.game-logo-wrap{margin-bottom:var(--sp-6)}
.game-logo-svg{width:140px;height:140px;margin:0 auto;display:block;filter:drop-shadow(0 8px 24px rgba(200,85,61,.3))}
.game-start-title{font-family:var(--serif);font-size:var(--fs-h1);color:var(--ink);margin-bottom:var(--sp-3)}
.game-start-desc{font-size:var(--fs-body);color:var(--text-light);margin-bottom:var(--sp-6);line-height:var(--lh-normal);max-width:440px;margin-left:auto;margin-right:auto}

/* 工序预览链 */
.game-steps-preview{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-bottom:var(--sp-6);padding:20px;background:rgba(248,244,239,.92);border-radius:var(--radius-lg);border:1px solid rgba(224,213,200,.8);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.g-step-dot{display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:20px;font-size:var(--fs-sm);font-weight:600;color:var(--accent);background:rgba(200,85,61,.08);border:1px solid rgba(200,85,61,.15)}
.g-step-dot span{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;border-radius:50%;font-size:var(--fs-xs);font-weight:700}
.g-step-arrow{color:var(--text-muted);font-size:.9rem}

/* 游戏按钮 */
.game-btn{display:inline-flex;align-items:center;gap:10px;background:linear-gradient(135deg,var(--accent),#a83d28);color:#fff;border:none;padding:16px 36px;border-radius:50px;font-family:var(--serif);font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s;box-shadow:0 8px 28px rgba(200,85,61,.4);letter-spacing:.04em}
.game-btn:hover{transform:translateY(-3px);box-shadow:0 14px 40px rgba(200,85,61,.55)}
.game-btn-outline{background:transparent;color:var(--ink);border:2px solid var(--border);box-shadow:none}
.game-btn-outline:hover{border-color:var(--accent);background:rgba(200,85,61,.04);box-shadow:none}
.game-start-btn{padding:18px 48px;font-size:1.25rem}
.game-hint{margin-top:var(--sp-4);font-size:var(--fs-sm);color:var(--text-muted)}

/* 进度条导航 */
.game-progress-bar{margin-bottom:24px;padding:0 0 20px;border-bottom:1px solid var(--border)}
.gp-steps{display:flex;align-items:center;justify-content:center;gap:0;max-width:700px;margin:0 auto}

/* 主游戏区：左侧信息 + 右侧画布 */
.game-main-area{display:grid;grid-template-columns:280px 1fr;gap:var(--sp-6);align-items:start}

/* 信息面板 */
.game-info-panel{background:rgba(253,250,244,.94);border-radius:var(--radius-md);padding:var(--sp-5);box-shadow:var(--card-shadow);position:sticky;top:100px;border:1px solid rgba(224,213,200,.85);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.gip-header{display:flex;align-items:center;gap:12px;margin-bottom:var(--sp-4);padding-bottom:var(--sp-4);border-bottom:1px solid var(--border)}
.gip-stage-num{font-family:var(--serif);font-size:2rem;font-weight:900;color:var(--accent);line-height:1;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:rgba(200,85,61,.08);border-radius:12px}
.gip-header h3{font-family:var(--serif);font-size:var(--fs-h3);color:var(--ink)}
.gip-header p{font-size:var(--fs-xs);color:var(--text-light);margin-top:2px}
.gip-instruction{background:linear-gradient(135deg,rgba(200,85,61,.06),rgba(212,165,116,.06));border-left:3px solid var(--accent);padding:14px 16px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--fs-sm);color:var(--text);line-height:1.7;margin-bottom:var(--sp-4)}
.gip-stats{display:flex;flex-direction:column;gap:10px;margin-bottom:var(--sp-4)}
.gip-stat{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-sm)}
.gip-stat-label{color:var(--text-muted)}
.gip-stat strong{font-family:var(--serif);font-size:var(--fs-h4);color:var(--accent)}
.gip-progress-wrap{display:flex;align-items:center;gap:10px;font-size:var(--fs-xs);color:var(--text-muted)}
.gip-progress-track{flex:1;height:8px;background:var(--bg);border-radius:4px;overflow:hidden}
.gip-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:4px;width:0%;transition:width .3s ease}

/* Canvas 容器 */
.game-canvas-wrap{background:rgba(253,250,244,.94);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--card-shadow);position:relative;border:1px solid rgba(224,213,200,.85);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
#gameCanvas{display:block;width:100%;height:auto;cursor:crosshair}

/* 弹窗遮罩 */
.game-modal{position:fixed;inset:0;z-index:9999;background:rgba(31,18,8,.72);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:20px}
.game-modal-inner{background:var(--card);border-radius:var(--radius-lg);padding:40px;text-align:center;max-width:420px;width:100%;box-shadow:0 24px 80px rgba(0,0,0,.3);animation:modalPopIn .4s cubic-bezier(.34,1.56,.64,1)}
@keyframes modalPopIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
.gm-stars{font-size:2rem;color:var(--accent2);letter-spacing:8px;margin-bottom:var(--sp-4)}
.gm-stars span{opacity:.3}
.gm-stars span.filled{opacity:1}
.game-modal-inner h3{font-family:var(--serif);font-size:var(--fs-h2);color:var(--ink);margin-bottom:var(--sp-2)}
.game-modal-inner>p{font-size:var(--fs-body);color:var(--text-light);margin-bottom:var(--sp-5)}
.gm-score-row{display:flex;justify-content:space-between;padding:16px 20px;background:var(--bg);border-radius:var(--radius-sm);margin-bottom:var(--sp-5);font-size:var(--fs-sm)}
.gm-score-row strong{font-family:var(--serif);font-size:var(--fs-h3);color:var(--accent)}

/* 总结算特殊样式 */
.gm-final{padding:48px 40px}
.gm-final-grade{width:90px;height:90px;margin:0 auto var(--sp-4);border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:2.5rem;font-weight:900;color:#fff;line-height:1}
.gm-final-grade.grade-s{background:linear-gradient(135deg,#c8553d,#a83d28);box-shadow:0 8px 32px rgba(200,85,61,.5)}
.gm-final-grade.grade-a{background:linear-gradient(135deg,#d4a574,#b8865a);box-shadow:0 8px 32px rgba(212,165,116,.5)}
.gm-final-grade.grade-b{background:linear-gradient(135deg,#8a9a70,#6b8255);box-shadow:0 8px 32px rgba(138,154,112,.5)}
.gm-final-grade.grade-c{background:linear-gradient(135deg,#8a8a8a,#666);box-shadow:0 8px 32px rgba(136,136,136,.5)}
.gm-final-stats{display:flex;justify-content:center;gap:24px;margin:var(--sp-6) 0;padding:20px;background:var(--bg);border-radius:var(--radius-sm)}
.gm-final-stats div{text-align:center}
.gm-final-stats span{display:block;font-size:var(--fs-xs);color:var(--text-muted);margin-bottom:4px}
.gm-final-stats strong{font-family:var(--serif);font-size:var(--fs-h3);color:var(--ink)}
.gm-final-actions{display:flex;gap:12px;justify-content:center;margin-top:var(--sp-6)}
.gm-final-actions .game-btn{padding:12px 24px;font-size:var(--fs-body)}

@media(max-width:1024px){
    .game-main-area{grid-template-columns:1fr}
    .game-info-panel{position:static}
}
@media(max-width:768px){
    .game-topbar{padding:90px var(--sp-4) var(--sp-6)}
    .game-body{padding:24px 16px 60px}
    .game-start-inner{padding:40px 16px}
    .game-logo-svg{width:100px;height:100px}
    .game-start-title{font-size:var(--fs-h2)}
    .gip-header{flex-direction:column;align-items:flex-start;gap:8px}
    .gm-final-actions{flex-direction:column}

    /* Hero 移动端适配（顶导 64px + 内边距） */
    .hero-section{
        height:calc(100vh - var(--tn-h) - var(--copybar-h));margin-top:var(--tn-h);
        padding:0 10px;align-items:center;
    }
    .hero-content{max-width:100%;padding:20px 18px 22px;border-radius:14px}
    .hero-title{margin-bottom:10px}
    .title-main{font-size:clamp(2.1rem,8.6vw,3rem);letter-spacing:.08em}
    .hero-subtitle{font-size:.95rem;margin-top:8px;padding-top:9px}
    .hero-subtitle::before{width:40px}
    .hero-backing{margin:10px 0 2px;font-size:.86rem;gap:10px}
    .hero-backing-label{font-size:.66rem;letter-spacing:.18em;padding-left:11px}
    .hero-backing-label::before{width:2.5px;height:9px}
    .hero-modules{margin:4px 0 10px;gap:5px}
    .hero-modules-label{font-size:.64rem;letter-spacing:.18em}
    .hero-mod-tag{padding:3px 10px;font-size:.72rem}
    .hero-vr-btn{padding:13px 22px;font-size:.92rem}
    .vr-hint-text{font-size:.7rem}
    /* 首屏内嵌入口：移动端两列排布（文旅研究整行） */
    .hero-content .hero-quicknav{gap:14px;margin-top:14px}
    .hero-content .qn-group{padding:11px 12px 12px;min-width:0;flex:1 1 calc(50% - 7px);gap:12px}
    .hero-content .qn-group-wide{flex:1 1 100%}
    .hero-content .qn-row{gap:8px}
    .hero-content .qn-item{min-width:0;padding:10px 6px;font-size:.72rem}
}
@media(max-width:1024px){
    .craft-entry{grid-template-columns:1fr}
    .next-chapter-btn{padding:24px 28px}
    .nc-title{font-size:1.5rem}
    .craft-detail-panel{width:340px}
}
@media(max-width:768px){
    .hero-vr-btn{padding:14px 28px;font-size:.95rem}
    .hero-cta-hint{font-size:.75rem}
    .next-chapter-wrap{padding:0 16px;margin-top:56px}
    .next-chapter-btn{flex-direction:column;align-items:flex-start;gap:12px;padding:24px}
    .nc-title{font-size:1.3rem}
    .nc-arrow{align-self:flex-end}
    .craft-explore-header{padding:14px 16px;flex-wrap:wrap;gap:10px}
    .ceh-left h3{font-size:1.05rem}
    .ceh-right{flex-wrap:wrap}
    .ceh-reset,.ceh-zoom,.ceh-close{padding:6px 12px;font-size:.78rem}
    .craft-explore-hint{flex-direction:column;gap:6px;text-align:center;font-size:.72rem;padding:8px 16px}
    .ceh-hint-mobile{display:inline}
    .craft-explore-progress{bottom:90px}
    .cep-bar{width:120px}
    .craft-detail-panel{width:100%;max-width:100vw}
    .craft-node{width:130px}
    .craft-node-circle{width:90px;height:90px}
    .craft-node-icon{width:40px;height:40px}
    .vr-info-panel{right:12px;left:12px;max-width:none;top:70px}
    #vr-audio-btn{left:auto;right:20px;top:64px}
    #vr-rotate-btn{left:20px;top:64px}
    .vr-nav{bottom:16px;gap:6px;padding:8px;max-width:96vw}
    .vr-nav-btn{padding:6px 8px;min-width:52px}
    .vr-nav-btn .vn-label{font-size:.62rem}
    .vr-hint{bottom:auto;top:110px;font-size:.72rem;padding:8px 16px}
    .vr-intro-inner h3{font-size:1.4rem}
    .vr-intro-steps li{font-size:.9rem}
    /* 首屏移动端紧凑化：让卡片整体在 750px 高度内可见 */
    .hero-content{padding:12px 14px 14px;border-radius:14px}
    .hero-title{margin-bottom:4px}
    .title-main{font-size:clamp(1.7rem,7vw,2.35rem);line-height:1.02}
    .hero-subtitle{font-size:.84rem;margin-top:5px;padding-top:7px}
    .hero-subtitle::before{width:30px;height:1.5px}
    .hero-backing{margin:6px 0 1px;gap:8px;font-size:.8rem}
    .hero-backing-label{font-size:.6rem;padding-left:9px;letter-spacing:.14em}
    .hero-backing-label::before{width:2px;height:7px}
    .hero-backing-value{font-size:.8rem}
    .hero-modules{margin:3px 0 6px;gap:3px}
    .hero-modules-label{font-size:.58rem;letter-spacing:.14em}
    .hero-mod-tag{padding:2px 8px;font-size:.66rem}
    .hero-intro{margin:6px 0 6px;padding:8px 12px;font-size:.78rem;line-height:1.62}
    .hero-intro p{margin:0 0 4px}
    .hero-cta{margin:2px 0 0}
    .hero-vr-btn{padding:9px 16px;font-size:.82rem}
    .vr-hint-text{font-size:.6rem;margin-top:2px}
    .hero-content .hero-quicknav{margin-top:8px;gap:8px}
    .hero-content .qn-group{padding:7px 8px 8px;gap:8px}
    .hero-content .qn-row{gap:4px}
    .hero-content .qn-item{padding:7px 3px;font-size:.66rem;gap:3px}
    .hero-content .qn-ico{width:16px;height:16px}
    .hero-content .qn-ico svg{width:13px;height:13px}
    /* 移动端文旅研究（4项一行）进一步紧凑，确保不溢出 */
    .hero-content .qn-group-wide .qn-row{gap:2px}
    .hero-content .qn-group-wide .qn-item{padding:5px 1px;font-size:.58rem;letter-spacing:0}
}

/* ========== 响应式补充（原版） ========== */
@media(max-width:1024px){
    :root{--fs-h1:clamp(1.75rem,5vw,2.4rem);--fs-h2:1.4rem;--fs-h3:1.2rem;--card-pad:24px}
    .craft-grid{grid-template-columns:repeat(2,1fr)}
    .gallery-grid{grid-template-columns:repeat(2,1fr)}
    .classroom-grid{grid-template-columns:repeat(2,1fr)}
    .about-grid{grid-template-columns:1fr}
    .overview-grid{grid-template-columns:repeat(2,1fr)}
    .highlights-bar{grid-template-columns:repeat(2,1fr)}
    .fieldwork-overview{grid-template-columns:repeat(2,1fr)}
    .data-viz-grid{grid-template-columns:1fr}
    .craft-extra{grid-template-columns:1fr}
    .overview-section{padding:var(--sp-8) 24px}
    .page-body{padding:var(--sp-7) 24px var(--sp-8)}
    .hero-content{max-width:480px}
    /* 平板时间线适配 */
    .timeline{max-width:100%;padding-left:16px;padding-right:16px}
    .tl-image{width:130px;min-height:150px}
    .tl-year{font-size:1.3rem}
    .tl-card h3{font-size:1.15rem}
    .tl-card p{font-size:var(--fs-sm);line-height:1.75}
}
@media(max-width:768px){
    :root{--fs-h1:clamp(1.6rem,5vw,2rem);--fs-h2:1.25rem;--fs-h3:1.1rem;--fs-h4:1rem;--card-pad:20px;--sp-7:32px;--sp-9:64px}
    .timeline-line{left:20px}
    .tl-item{width:100%;left:0!important;text-align:left!important;padding-left:50px;padding-right:var(--sp-4)}
    .tl-item::before{left:12px!important;right:auto!important}
    .tl-icon{margin-left:0!important}
    .tl-card{flex-direction:column}
    .tl-image{width:100%;min-height:140px}
    .tl-year{font-size:1.2rem}
    .tl-year::after,.tl-year::before{display:none!important}
    .tl-card h3{font-size:1.1rem}
    .tl-card p{font-size:var(--fs-sm);line-height:1.7;text-align:left}
    .craft-grid{grid-template-columns:1fr}
    .gallery-grid{grid-template-columns:1fr 1fr}
    .artisan-grid{grid-template-columns:1fr}
    .artisan-card{flex-direction:column;align-items:center;text-align:center}
    .revival-grid{grid-template-columns:1fr}
    .creative-grid{grid-template-columns:1fr}
    .classroom-grid{grid-template-columns:1fr}
    .tour-cards{grid-template-columns:1fr}
    /* hero 旧版移动端覆盖已移除：单屏设计由上方 ≤768 块统一定义 */
    .overview-grid{grid-template-columns:1fr}
    .highlights-bar{grid-template-columns:1fr}
    .fieldwork-overview{grid-template-columns:1fr 1fr}
    .fw-photo-grid{grid-template-columns:1fr 1fr}
    .interview-grid{grid-template-columns:1fr}
    .page-topbar{padding:90px var(--sp-4) var(--sp-6)}
    .page-body{padding:var(--sp-6) var(--sp-4) var(--sp-7)}
    .overview-section{padding:var(--sp-7) var(--sp-4)}
    .next-chapter-btn{padding:var(--sp-5)}
    .nc-title{font-size:1.15rem}}
@media(prefers-reduced-motion:reduce){
    *{animation-duration:0.01ms!important;transition-duration:0.01ms!important}
    .reveal{opacity:1;transform:none;filter:none}
}

/* ====== 纸上工坊 · 总结算各关星级汇总 ====== */
.gm-final-stages{margin:var(--sp-5) 0;display:flex;flex-direction:column;gap:8px;max-height:210px;overflow:auto}
.gm-final-stage{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--bg);border-radius:var(--radius-sm);font-size:.9rem}
.gm-fs-num{font-family:var(--serif);font-weight:700;color:var(--accent);width:30px;text-align:center;flex-shrink:0}
.gm-fs-title{font-family:var(--serif);color:var(--ink);flex:1;text-align:left}
.gm-fs-stars{color:#e6b800;letter-spacing:2px;font-size:1.1rem;flex-shrink:0}

/* ============================================================
   论坛 / 用户管理 / 管理后台 / 全站占位图替换 样式
   ============================================================ */

/* 导航鉴权区 */
.nav-auth{display:flex;align-items:center;gap:8px;margin-left:8px}
.nav-auth-btn{
    font-family:var(--sans);font-size:.92rem;font-weight:600;letter-spacing:.04em;
    padding:9px 20px;border-radius:30px;
    border:1.5px solid var(--accent);
    background:rgba(248,244,239,.88);
    color:var(--ink);
    cursor:pointer;transition:all .28s cubic-bezier(.2,.8,.3,1);
}
.nav-auth-btn:hover{
    background:var(--accent);color:#fff;transform:translateY(-1px);
    box-shadow:0 6px 16px rgba(200,85,61,.32);
}
.nav-auth-btn-primary{
    background:rgba(248,244,239,.96);
    border:1.5px solid var(--accent);
    color:var(--ink);font-weight:700;
}
.nav-auth-btn-primary:hover{
    background:var(--accent);color:#fff;transform:translateY(-1px);
    box-shadow:0 8px 20px rgba(200,85,61,.40);
}
.nav-user{position:relative;display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px 10px;border-radius:30px;transition:background .25s}
.nav-user:hover,.nav-user.open{background:rgba(200,85,61,.06)}
.nav-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:700;font-size:1rem}
.nav-uname{font-size:.85rem;color:var(--ink);max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-caret{font-size:.7rem;color:var(--text-muted)}
.nav-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:140px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 16px 40px rgba(0,0,0,.16);padding:6px;display:none;z-index:9999}
.nav-user.open .nav-dropdown{display:block}
.nav-dropdown a{display:block;padding:10px 14px;border-radius:8px;font-size:.88rem;color:var(--ink);cursor:pointer;transition:background .2s}
.nav-dropdown a:hover{background:rgba(200,85,61,.08);color:var(--accent)}

/* 通用模态框（登录/注册/发帖/详情） */
.auth-modal{position:fixed;inset:0;z-index:10000;background:rgba(31,18,8,.72);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:20px}
.auth-modal-mask{position:absolute;inset:0}
.auth-modal-box{position:relative;background:var(--card);border-radius:var(--radius-lg);padding:36px 32px;max-width:440px;width:100%;box-shadow:0 24px 80px rgba(0,0,0,.3);animation:modalPopIn .4s cubic-bezier(.34,1.56,.64,1);max-height:90vh;overflow:auto}
.auth-box-wide{max-width:560px}
.auth-modal-close{position:absolute;top:14px;right:16px;border:none;background:transparent;font-size:1.2rem;color:var(--text-muted);cursor:pointer;line-height:1}
.auth-modal-close:hover{color:var(--accent)}
.auth-title{font-family:var(--serif);font-size:var(--fs-h3);color:var(--ink);margin-bottom:var(--sp-5);text-align:center}
.auth-tabs{display:flex;gap:8px;justify-content:center;margin-bottom:var(--sp-5)}
.auth-tab{border:none;background:transparent;font-family:var(--serif);font-size:1.1rem;color:var(--text-muted);padding:6px 18px;cursor:pointer;border-bottom:2px solid transparent;transition:all .3s}
.auth-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.auth-form{display:flex;flex-direction:column;gap:16px}
.form-group{display:flex;flex-direction:column;gap:6px;text-align:left}
.form-group label{font-size:.85rem;color:var(--text-light);font-family:var(--sans)}
.form-group input,.form-group select,.form-group textarea{font-family:var(--sans);font-size:.95rem;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink);transition:border-color .25s;width:100%;box-sizing:border-box}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent)}
.form-group textarea{resize:vertical;line-height:1.6}
.auth-msg{font-size:.85rem;min-height:1.2em;margin:0;text-align:center}
.auth-msg.err{color:var(--accent)}
.auth-msg.ok{color:#5a8a4a}
.auth-submit{justify-content:center;margin-top:4px}
.auth-switch{text-align:center;font-size:.85rem;color:var(--text-muted);margin:0}
.auth-switch a{color:var(--accent);cursor:pointer}

/* 论坛子版块切换 */
.forum-sub-tabs{display:flex;gap:8px;margin-bottom:20px;border-bottom:1px solid var(--border);padding-bottom:12px}
.forum-sub-tab{font-family:var(--sans);font-size:.95rem;padding:10px 22px;border:1px solid var(--border);border-radius:30px;background:var(--card);color:var(--text-light);cursor:pointer;transition:all .3s}
.forum-sub-tab:hover{border-color:var(--accent);color:var(--accent)}
.forum-sub-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}
.forum-view{display:none}
.forum-view.active{display:block}

/* 论坛工具栏 */
.forum-toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:20px}
.forum-new-btn{margin-right:auto;padding:12px 24px;font-size:.95rem}
.forum-search{flex:1;min-width:180px;padding:11px 16px;border:1px solid var(--border);border-radius:30px;background:var(--card);font-family:var(--sans);font-size:.9rem;color:var(--ink)}
.forum-search:focus{outline:none;border-color:var(--accent)}
.forum-sort{padding:11px 16px;border:1px solid var(--border);border-radius:30px;background:var(--card);font-family:var(--sans);font-size:.9rem;color:var(--ink);cursor:pointer}
.forum-cats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}
.forum-posts{display:flex;flex-direction:column;gap:16px}
.forum-loading,.forum-empty{padding:40px;text-align:center;color:var(--text-muted);font-family:var(--sans)}

/* 帖子卡片 */
.forum-card{display:flex;gap:18px;background:rgba(253,250,244,.94);border:1px solid rgba(224,213,200,.85);border-radius:var(--radius-lg);padding:18px;cursor:pointer;transition:transform .3s,box-shadow .3s,border-color .3s,background-color .3s;overflow:hidden;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.forum-card:hover{transform:translateY(-3px);box-shadow:0 14px 40px rgba(44,24,16,.12);border-color:rgba(200,85,61,.35);background-color:rgba(253,250,244,.98)}
.forum-card-cover{width:150px;min-width:150px;height:110px;border-radius:var(--radius-sm);background-size:cover;background-position:center;background-color:var(--bg)}
.forum-card-main{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.forum-card-title{font-family:var(--serif);font-size:1.2rem;color:var(--ink);margin:0;line-height:1.4}
.forum-card-summary{font-size:.9rem;color:var(--text-light);margin:0;line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.forum-card-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:.8rem;color:var(--text-muted)}
.forum-author{color:var(--accent);font-weight:600}
.forum-cat-badge{background:rgba(200,85,61,.1);color:var(--accent);padding:2px 10px;border-radius:20px}
.forum-card .card-tags{margin-top:2px}

/* 分页 */
.forum-pager{display:flex;align-items:center;justify-content:center;gap:16px;padding:20px}
.forum-page-btn{font-family:var(--sans);font-size:.9rem;padding:10px 20px;border:1px solid var(--border);border-radius:30px;background:var(--card);color:var(--ink);cursor:pointer;transition:all .3s}
.forum-page-btn:hover{border-color:var(--accent);color:var(--accent)}
.forum-page-info{font-size:.85rem;color:var(--text-muted)}

/* 素材库 */
.materials-toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start;margin-bottom:20px}
.materials-new-btn{padding:12px 24px;font-size:.95rem}
.materials-cats{display:flex;gap:10px;flex-wrap:wrap;flex:1;align-items:center}
.materials-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}
.material-card{background:rgba(253,250,244,.94);border:1px solid rgba(224,213,200,.85);border-radius:var(--radius-lg);overflow:hidden;transition:transform .3s,box-shadow .3s}
.material-card:hover{transform:translateY(-4px);box-shadow:0 14px 40px rgba(44,24,16,.12)}
.material-thumb{aspect-ratio:4/3;background-size:cover;background-position:center;cursor:pointer;position:relative}
.material-thumb::after{content:'🔍';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(44,24,16,.25);color:#fff;font-size:1.4rem;opacity:0;transition:opacity .25s}
.material-thumb:hover::after{opacity:1}
.material-info{padding:14px}
.material-title{font-family:var(--serif);font-size:1.05rem;color:var(--ink);margin:0 0 6px;line-height:1.4}
.material-desc{font-size:.82rem;color:var(--text-light);margin:0 0 10px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.material-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.75rem;color:var(--text-muted)}
.material-ops{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}
.material-op-btn{font:inherit;font-size:.75rem;padding:5px 12px;border-radius:16px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;transition:.18s}
.material-op-btn:hover{border-color:#b23b2e;color:#b23b2e;background:rgba(178,59,46,.06)}
.materials-empty{padding:60px 20px;text-align:center;color:var(--text-muted)}

/* 素材预览弹窗 */
.material-preview-box{max-width:760px}
.material-preview-content{text-align:center}
.material-preview-img{max-width:100%;max-height:60vh;border-radius:var(--radius-md);margin-bottom:16px}
.material-preview-title{font-family:var(--serif);font-size:1.3rem;color:var(--ink);margin:0 0 8px}
.material-preview-desc{font-size:.95rem;color:var(--text-light);line-height:1.7;margin:0 0 12px}
.material-preview-meta{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;font-size:.85rem;color:var(--text-muted)}

.inline-image-group .inline-image-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.inline-image-group input[type="file"]{flex:1;min-width:160px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);font-family:var(--sans);font-size:.85rem;color:var(--ink)}
.forum-inline-upload{padding:9px 16px;border:none;border-radius:var(--radius-sm);background:var(--accent);color:#fff;font-family:var(--sans);font-size:.85rem;cursor:pointer;transition:background .2s}
.forum-inline-upload:hover{background:#a83d28}
.forum-inline-upload:disabled{background:#c9b9a8;cursor:not-allowed}
.inline-image-hint{display:block;margin-top:6px;font-size:.78rem;color:var(--text-muted)}

/* 帖子详情 */
.fd-head{margin-bottom:16px}
.fd-title{font-family:var(--serif);font-size:1.6rem;color:var(--ink);margin:0 0 10px;line-height:1.4}
.fd-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:.85rem;color:var(--text-muted);margin-bottom:10px}
.fd-cover{width:100%;height:260px;border-radius:var(--radius-md);background-size:cover;background-position:center;margin:14px 0;background-color:var(--bg)}
.fd-body{font-family:var(--sans);font-size:1rem;line-height:1.9;color:var(--ink);white-space:pre-wrap;word-break:break-word;padding:8px 0 20px;border-bottom:1px solid var(--border)}
.fd-comments{margin-top:20px}
.fd-comments-title{font-family:var(--serif);font-size:1.2rem;color:var(--ink);margin:0 0 14px}
.fd-login-hint{color:var(--accent);cursor:pointer;font-size:.9rem;margin:8px 0}
.fd-reply-box{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.fd-reply-box textarea,.fd-inline-reply textarea{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--sans);font-size:.9rem;width:100%;box-sizing:border-box;resize:vertical}
.fd-reply-box .game-btn{padding:10px 22px;font-size:.9rem;align-self:flex-start}
.fd-comment{position:relative;padding:14px 0;border-bottom:1px solid rgba(0,0,0,.05)}
.fdc-author{font-family:var(--serif);font-size:.95rem;color:var(--accent);font-weight:600}
.fdc-content{font-family:var(--sans);font-size:.95rem;line-height:1.7;color:var(--ink);margin:4px 0;white-space:pre-wrap;word-break:break-word}
.fdc-actions{display:flex;gap:14px;font-size:.82rem}
.fdc-reply-btn,.fdc-del-btn{color:var(--text-muted);cursor:pointer}
.fdc-reply-btn:hover{color:var(--accent)}
.fdc-del-btn:hover{color:var(--accent)}
.fdc-replies{margin:10px 0 0 22px;border-left:2px solid rgba(200,85,61,.15);padding-left:14px}
.fdc-reply{padding:6px 0;font-size:.9rem;line-height:1.6}
.fdcr-author{color:var(--accent);font-weight:600}
.fdcr-content{color:var(--ink)}
.fdcr-actions{margin-left:8px}
.fd-inline-reply{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.fd-inline-reply .game-btn{padding:8px 18px;font-size:.85rem;align-self:flex-start}

/* 管理后台 */
.admin-tabs{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}
.admin-content{min-height:200px}
.admin-table{width:100%;border-collapse:collapse;background:rgba(253,250,244,.94);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 8px 30px rgba(44,24,16,.08);font-family:var(--sans);font-size:.88rem;border:1px solid rgba(224,213,200,.85);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.admin-table th,.admin-table td{padding:12px 14px;text-align:left;border-bottom:1px solid rgba(0,0,0,.05)}
.admin-table th{background:var(--bg);color:var(--text-light);font-weight:600;font-size:.82rem}
.admin-table tr:hover td{background:rgba(200,85,61,.03)}
.danger-text{color:var(--accent);font-weight:600}
.admin-ops,.admin-media-ops{display:flex;gap:8px;flex-wrap:wrap}
.admin-mini-btn{font-family:var(--sans);font-size:.8rem;padding:6px 14px;border:1px solid var(--border);border-radius:20px;background:var(--card);color:var(--ink);cursor:pointer;transition:all .2s}
.admin-mini-btn:hover{border-color:var(--accent);color:var(--accent)}
.admin-mini-btn.danger:hover{border-color:var(--accent);color:var(--accent);background:rgba(200,85,61,.06)}
.admin-role-sel{padding:6px 10px;border:1px solid var(--border);border-radius:8px;font-family:var(--sans);font-size:.85rem;background:var(--card);cursor:pointer}
.admin-add-row{display:flex;gap:12px;align-items:center;margin-bottom:20px;flex-wrap:wrap}
.admin-input{flex:1;min-width:200px;padding:11px 16px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--sans);font-size:.9rem}
.admin-input:focus{outline:none;border-color:var(--accent)}
.admin-cat-list{display:flex;flex-direction:column;gap:10px}
.admin-cat-item{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--serif);font-size:1.05rem;color:var(--ink)}
.admin-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}
.admin-media-cell{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;display:flex;flex-direction:column;gap:8px;transition:transform .25s,box-shadow .25s}
.admin-media-cell:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(44,24,16,.1)}
.admin-media-img{width:100%;height:120px;object-fit:cover;border-radius:6px;background:var(--bg)}
.admin-media-name{font-size:.78rem;color:var(--text-muted);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-media-ops{justify-content:center}
.admin-hint-text{font-family:var(--sans);font-size:.88rem;color:var(--text-light);background:rgba(200,85,61,.05);padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:18px;line-height:1.6}
.admin-site-list{display:flex;flex-direction:column;gap:10px}
.admin-site-row{display:flex;align-items:center;gap:14px;padding:12px 16px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);flex-wrap:wrap}
.admin-site-slot{flex:1;min-width:200px;font-family:var(--serif);font-size:.95rem;color:var(--ink)}
.admin-site-sel{padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--sans);font-size:.88rem;background:var(--card);min-width:200px;cursor:pointer}

/* 后台素材审核 */
.admin-materials-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}
.admin-material-cell{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;display:flex;flex-direction:column;gap:8px;transition:transform .25s,box-shadow .25s}
.admin-material-cell:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(44,24,16,.1)}
.admin-material-thumb{width:100%;height:130px;object-fit:cover;border-radius:6px;background:var(--bg);cursor:pointer}
.admin-material-name{font-size:.8rem;color:var(--ink);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-material-meta{font-size:.72rem;color:var(--text-muted);text-align:center}
.admin-material-status{font-size:.75rem;text-align:center;padding:3px 10px;border-radius:20px;background:rgba(200,85,61,.1);color:var(--accent);display:inline-block}
.admin-material-status.ok{background:rgba(76,175,80,.12);color:#4caf50}
.admin-material-ops{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}

.flash{animation:flashOk .6s ease}
@keyframes flashOk{0%{background:rgba(200,85,61,.18)}100%{background:transparent}}

/* 全站占位图替换：注入的图片覆盖占位元素 */
.slot-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit;z-index:1}
.slot-filled{position:relative;overflow:hidden}
.slot-filled>:not(.slot-image){opacity:0}
.slot-filled .card-pattern,.slot-filled .card-label{position:relative;z-index:2;opacity:1 !important}

/* 移动端适配 */
@media(max-width:768px){
    .nav-auth{margin-left:0}
    .nav-uname{display:none}
    .forum-card{flex-direction:column}
    .forum-card-cover{width:100%;min-width:0;height:160px}
    .forum-new-btn{margin-right:0;width:100%}
    .materials-toolbar{flex-direction:column}
    .materials-new-btn{width:100%}
    .materials-grid{grid-template-columns:repeat(2,1fr);gap:12px}
    .admin-materials-grid{grid-template-columns:repeat(2,1fr)}
    .admin-table{font-size:.78rem}
    .admin-table th,.admin-table td{padding:8px 10px}
    .fd-cover{height:180px}
}

/* ============ 分享弹窗 ============ */
.auth-modal-title{font-family:"ZCOOL XiaoWei",serif;font-size:1.3rem;color:var(--ink,#2c1810);margin:6px 0 4px}
.share-box{max-width:420px;text-align:center}
.share-sub{color:#8a7a6a;font-size:.85rem;margin:0 0 16px}
.share-url-row{display:flex;gap:8px;margin-bottom:14px}
.share-url-input{
  flex:1;min-width:0;padding:10px 12px;border:1px solid #e3d9cc;border-radius:8px;
  font:inherit;font-size:.85rem;background:#fbf7f1;color:var(--ink,#2c1810)
}
.share-copy{padding:10px 18px;white-space:nowrap}
.share-qr-wrap{display:flex;justify-content:center;margin:6px 0 14px}
.share-qr{width:180px;height:180px;border-radius:10px;background:#fff;padding:8px;box-shadow:0 4px 18px rgba(44,24,16,.12)}

/* ============ 角色标识与权限差异 ============ */
.nav-role{
  font:inherit;font-size:.68rem;font-weight:600;padding:2px 8px;border-radius:20px;line-height:1.4;
  white-space:nowrap;letter-spacing:.5px;
}
.nav-role-admin{background:var(--accent,#c8553d);color:#fff;box-shadow:0 2px 8px rgba(200,85,61,.35)}
.nav-role-user{background:#ece4d8;color:#7a6a58;border:1px solid #ddd2c2}
.nav-avatar-admin{box-shadow:0 0 0 2px var(--accent,#c8553d);color:var(--accent,#c8553d)}
/* 管理员独立高亮入口：与参观者形成明显视觉区分 */
.nav-admin-link{
  font:inherit;font-size:.85rem;font-weight:600;padding:7px 14px;border-radius:20px;cursor:pointer;
  border:none;background:linear-gradient(135deg,#c8553d,#a8432f);color:#fff;
  box-shadow:0 3px 12px rgba(200,85,61,.4);transition:.2s;white-space:nowrap
}
.nav-admin-link:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(200,85,61,.5)}
/* 论坛卡片操作条（按角色可见） */
.forum-card-ops{display:flex;gap:8px;padding:10px 14px;border-top:1px dashed var(--border,#e8ddcd);background:rgba(200,85,61,.03)}
.forum-card-op{
  font:inherit;font-size:.78rem;padding:5px 12px;border-radius:16px;cursor:pointer;
  border:1px solid var(--border,#e8ddcd);background:var(--card,#fff);color:var(--text,#2c1810);transition:.18s
}
.forum-card-op:hover{border-color:var(--accent,#c8553d);color:var(--accent,#c8553d)}
.forum-card-op-danger:hover{border-color:#b23b2e;color:#b23b2e;background:rgba(178,59,46,.06)}
/* 详情页管理操作 */
.fd-ops{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.fd-op-btn{
  font:inherit;font-size:.82rem;padding:6px 16px;border-radius:18px;cursor:pointer;
  border:1px solid var(--border,#e8ddcd);background:var(--card,#fff);color:var(--text,#2c1810);transition:.18s
}
.fd-op-btn:hover{border-color:var(--accent,#c8553d);color:var(--accent,#c8553d)}
.fd-op-danger:hover{border-color:#b23b2e;color:#b23b2e;background:rgba(178,59,46,.06)}
/* 管理员论坛「管理视角」横幅 */
.forum-admin-banner{
  background:linear-gradient(135deg,rgba(200,85,61,.12),rgba(212,165,116,.12));
  border:1px solid rgba(200,85,61,.3);border-radius:var(--radius-sm,10px);
  padding:12px 18px;margin-bottom:18px;font-family:var(--sans,system-ui);font-size:.9rem;color:var(--ink,#2c1810)
}
.forum-admin-banner b{color:var(--accent,#c8553d)}
/* 无权限提示页 */
.admin-denied{
  max-width:520px;margin:48px auto;text-align:center;padding:40px 28px;
  background:var(--card,#fff);border:1px solid var(--border,#e8ddcd);border-radius:var(--radius,14px);
  box-shadow:0 14px 40px rgba(44,24,16,.08)
}
.admin-denied-icon{font-size:3rem;margin-bottom:8px}
.admin-denied h3{font-family:"ZCOOL XiaoWei",serif;font-size:1.5rem;color:var(--ink,#2c1810);margin:6px 0 14px}
.admin-denied-role{font-family:var(--sans,system-ui);color:var(--text-light,#6a5a48);margin:0 0 14px}
.admin-denied-tip{
  font-family:var(--sans,system-ui);font-size:.88rem;color:var(--text-light,#6a5a48);line-height:1.9;
  background:rgba(200,85,61,.05);padding:14px 18px;border-radius:var(--radius-sm,10px);margin:0 0 22px
}
.role-tag-visitor{display:inline-block;background:#ece4d8;color:#7a6a58;border:1px solid #ddd2c2;border-radius:14px;padding:1px 10px;font-size:.82rem;font-weight:600}

.share-sys-btn{
  display:block;width:100%;padding:10px;border:1px dashed rgba(200,85,61,.5);
  background:transparent;color:var(--accent,#c8553d);border-radius:8px;cursor:pointer;font:inherit;font-size:.9rem
}
.share-sys-btn:hover{background:rgba(200,85,61,.08)}

/* ============ 帖子详情分享按钮 ============ */
.fd-share-btn{
  margin-left:auto;align-self:flex-start;border:1px solid rgba(200,85,61,.45);
  background:transparent;color:var(--accent,#c8553d);border-radius:18px;
  padding:5px 14px;font:inherit;font-size:.82rem;cursor:pointer;transition:.2s
}
.fd-share-btn:hover{background:var(--accent,#c8553d);color:#fff}
.fd-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}

/* ============ 管理员数据统计 ============ */
.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:22px}
.stat-card{background:#fff;border:1px solid #efe6d8;border-radius:12px;padding:18px 16px;box-shadow:0 4px 16px rgba(44,24,16,.06)}
.stat-card-label{font-size:.82rem;color:#8a7a6a;margin-bottom:8px}
.stat-card-value{font-family:"ZCOOL XiaoWei",serif;font-size:2rem;color:var(--accent,#c8553d);line-height:1}
.stat-card-sub{font-size:.75rem;color:#a89a8a;margin-top:8px}
.stat-trend{background:#fff;border:1px solid #efe6d8;border-radius:12px;padding:18px 16px;margin-bottom:22px;box-shadow:0 4px 16px rgba(44,24,16,.06)}
.stat-trend-title{font-family:"ZCOOL XiaoWei",serif;font-size:1.05rem;color:var(--ink,#2c1810);margin:0 0 16px}
.stat-bars{display:flex;align-items:flex-end;gap:14px;height:170px;padding-top:10px}
.stat-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.stat-bar{width:60%;max-width:42px;background:linear-gradient(180deg,var(--accent,#c8553d),#e08a72);border-radius:6px 6px 0 0;transition:height .6s cubic-bezier(.2,.8,.2,1);min-height:4px}
.stat-bar-uv{font-size:.78rem;color:var(--ink,#2c1810);font-weight:600;margin-top:6px}
.stat-bar-day{font-size:.7rem;color:#a89a8a;margin-top:2px}
.stat-top{background:#fff;border:1px solid #efe6d8;border-radius:12px;padding:18px 16px;box-shadow:0 4px 16px rgba(44,24,16,.06)}

/* ============ 注册·身份选择 ============ */
.auth-role-cards{display:flex;gap:10px;margin-top:6px}
.auth-role-card{flex:1;position:relative;display:flex;flex-direction:column;gap:3px;border:1.5px solid #e2d7c8;border-radius:10px;padding:10px 12px;cursor:pointer;background:#fcf9f4;transition:.2s}
.auth-role-card input{position:absolute;opacity:0}
.auth-role-card .arc-title{font-family:"ZCOOL XiaoWei",serif;font-size:1rem;color:var(--ink,#2c1810)}
.auth-role-card .arc-desc{font-size:.74rem;color:#9a8a78;line-height:1.4}
.auth-role-card:has(input:checked){border-color:var(--accent,#c8553d);background:rgba(200,85,61,.07);box-shadow:0 2px 10px rgba(200,85,61,.12)}
.auth-invite{margin-top:4px}

/* ============ 收藏按钮 ============ */
.forum-card{position:relative}
.forum-fav-btn{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:50%;border:1px solid rgba(200,85,61,.35);background:rgba(255,255,255,.85);color:#c9b9a8;font-size:1.05rem;line-height:1;cursor:pointer;z-index:3;transition:.2s;display:flex;align-items:center;justify-content:center}
.forum-fav-btn:hover{background:#fff;color:var(--accent,#c8553d)}
.forum-fav-btn.faved{background:var(--accent,#c8553d);border-color:var(--accent,#c8553d);color:#fff}

.card-img{position:relative}
.fav-btn{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:50%;border:1px solid rgba(200,85,61,.35);background:rgba(255,255,255,.82);color:#c9b9a8;font-size:1.05rem;line-height:1;cursor:pointer;z-index:4;transition:.2s;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.fav-btn:hover{background:#fff;color:var(--accent,#c8553d)}
.fav-btn.faved{background:var(--accent,#c8553d);border-color:var(--accent,#c8553d);color:#fff}

/* ============ 参观者个人主页 ============ */
.profile-gate{text-align:center;padding:70px 20px}
.profile-gate-icon{font-size:2.6rem;margin-bottom:10px}
.profile-gate h3{font-family:"ZCOOL XiaoWei",serif;color:var(--ink,#2c1810);margin:0 0 10px}
.profile-gate-tip{color:#8a7a6a;max-width:420px;margin:0 auto 20px;font-size:.9rem;line-height:1.6}
.profile-card{display:flex;align-items:flex-start;gap:20px;background:#fff;border:1px solid #efe6d8;border-radius:14px;padding:22px;margin-bottom:24px;box-shadow:0 4px 16px rgba(44,24,16,.06);position:relative}
.profile-avatar{width:74px;height:74px;border-radius:50%;object-fit:cover;border:2px solid #f0e6d8}
.profile-avatar-text{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent2,#d4a574),#e8c9a0);color:#fff;font-family:"ZCOOL XiaoWei",serif;font-size:1.8rem}
.profile-info{flex:1;min-width:0}
.profile-name{font-family:"ZCOOL XiaoWei",serif;font-size:1.4rem;color:var(--ink,#2c1810)}
.profile-username{color:#9a8a78;font-size:.88rem;margin:2px 0 8px}
.profile-email{color:#7a6a58;font-size:.85rem;margin:4px 0}
.profile-bio{color:#5a4a3a;font-size:.9rem;line-height:1.6;margin:8px 0}
.profile-joined{color:#a89a8a;font-size:.78rem;margin-top:6px}
.profile-edit-btn{position:absolute;top:18px;right:18px}
.profile-edit-box{background:#fcf9f4;border:1px dashed #e2d7c8;border-radius:12px;padding:18px;margin:-10px 0 24px}
.profile-edit-box h4{font-family:"ZCOOL XiaoWei",serif;color:var(--ink,#2c1810);margin:0 0 14px}
.profile-edit-actions{display:flex;gap:10px;margin-top:6px}
.profile-cancel{background:#ece4d8;color:#7a6a58}
.profile-fav-title{font-family:"ZCOOL XiaoWei",serif;color:var(--ink,#2c1810);margin:0 0 12px}
.profile-fav-tabs{display:flex;gap:8px;margin-bottom:14px}
.profile-fav-list{display:flex;flex-direction:column;gap:10px}
.profile-fav-item{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:1px solid #efe6d8;border-radius:10px;padding:12px 14px;box-shadow:0 2px 10px rgba(44,24,16,.05)}
.profile-fav-link{flex:1;cursor:pointer;color:var(--ink,#2c1810);font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-fav-link:hover{color:var(--accent,#c8553d)}

/* ============ 管理员系统设置 ============ */
.admin-settings-form{max-width:520px}
.admin-setting-row{display:flex;align-items:center;gap:10px;margin:14px 0;font-size:.92rem;color:var(--text,#3a2a1a)}
.admin-chk{width:18px;height:18px;accent-color:var(--accent,#c8553d);cursor:pointer}
.admin-settings-form .admin-input{width:100%}

/* ========== 纸上工坊（page-game） ========== */
.workshop-intro{
    display:grid;
    grid-template-columns:1fr 220px;
    gap:var(--sp-5);
    align-items:center;
    padding:var(--sp-5) var(--sp-5);
    background:linear-gradient(135deg,var(--paper) 0%,var(--bg-warm) 100%);
    border-radius:var(--radius-lg);
    border:1px solid var(--border);
    margin-bottom:var(--sp-5);
    box-shadow:0 4px 24px rgba(0,0,0,.04);
}
.workshop-intro-text h3{margin-bottom:var(--sp-2)}
.workshop-intro-text .craft-sub{font-size:1rem;line-height:1.8;color:var(--text)}
.workshop-tip{margin-top:var(--sp-3);font-size:.9rem;color:var(--text-light);font-style:italic}
.workshop-intro-deco svg{width:200px;height:200px}
.workshop-stages{margin-bottom:var(--sp-5)}
.stage-grid{
    display:grid;
    grid-template-columns:repeat(6,1fr);
    gap:var(--sp-3);
    margin-top:var(--sp-4);
}
.stage-card{
    position:relative;
    padding:var(--sp-4) var(--sp-3);
    background:var(--card);
    border:1px solid var(--border);
    border-radius:var(--radius-md);
    text-align:center;
    transition:all .25s;
    cursor:default;
}
.stage-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px rgba(0,0,0,.08);border-color:var(--accent2)}
.stage-num{
    position:absolute;top:8px;left:10px;
    font-size:.7rem;font-weight:700;color:var(--accent);
    letter-spacing:1px;
}
.stage-icon{color:var(--accent2);margin:var(--sp-3) auto;width:60px;height:60px}
.stage-icon svg{width:60px;height:60px}
.stage-card h4{margin:var(--sp-2) 0 4px;font-size:1.05rem;color:var(--ink)}
.stage-en{font-size:.7rem;color:var(--text-muted);letter-spacing:1px}
.stage-card p{font-size:.82rem;color:var(--text-light);margin-top:6px;line-height:1.5}
.workshop-start{
    text-align:center;
    margin:var(--sp-5) 0;
}
.workshop-start-btn{
    display:inline-flex;
    flex-direction:column;
    align-items:center;
    gap:4px;
    padding:var(--sp-4) var(--sp-6);
    background:linear-gradient(135deg,var(--accent) 0%,#a83d28 100%);
    color:#fff;
    border:none;
    border-radius:var(--radius-md);
    font-family:var(--serif);
    font-size:1.4rem;
    font-weight:600;
    cursor:pointer;
    box-shadow:0 6px 20px rgba(200,85,61,.35);
    transition:all .25s;
    min-width:260px;
}
.workshop-start-btn:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(200,85,61,.45)}
.workshop-start-btn:active{transform:translateY(-1px)}
.workshop-start-btn .wsb-icon{font-size:2.4rem;line-height:1}
.workshop-start-btn .wsb-text{font-size:1.3rem}
.workshop-start-btn .wsb-sub{font-size:.78rem;font-weight:400;opacity:.85;font-family:var(--sans)}
.workshop-start-tip{margin-top:var(--sp-3);font-size:.85rem;color:var(--text-light)}
@media(max-width:900px){
    .workshop-intro{grid-template-columns:1fr;text-align:center}
    .workshop-intro-deco{display:none}
    .stage-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:540px){
    .stage-grid{grid-template-columns:repeat(2,1fr)}
    .workshop-start-btn{min-width:200px;padding:var(--sp-3) var(--sp-4)}
}

/* ===== 游戏挂载区（paper-game.js 动态注入） ===== */
.game-mount{
    margin:var(--sp-5) 0;
    background:var(--bg-dark);
    border-radius:var(--radius-lg);
    overflow:hidden;
    box-shadow:0 10px 40px rgba(0,0,0,.18);
    color:#f5e6d3;
    font-family:var(--serif);
}
.game-screen{position:relative;padding:var(--sp-5)}
.game-start-screen{
    min-height:420px;
    display:flex;align-items:center;justify-content:center;
    text-align:center;
    background:radial-gradient(circle at 50% 40%,#2d1b00 0%,#1a1008 100%);
}
.gs-title{font-size:2.4rem;color:var(--accent2);margin-bottom:var(--sp-2);font-weight:600;letter-spacing:2px}
.gs-sub{color:#d4a574;opacity:.8;margin-bottom:var(--sp-5);font-size:1.1rem;font-family:var(--sans)}
.gs-btn,.gm-btn{
    padding:14px 38px;
    background:var(--accent);
    color:#fff;
    border:none;
    border-radius:30px;
    font-size:1.1rem;
    font-weight:600;
    cursor:pointer;
    transition:all .2s;
    font-family:var(--serif);
}
.gs-btn:hover,.gm-btn:hover{background:#a83d28;transform:translateY(-2px);box-shadow:0 6px 16px rgba(200,85,61,.4)}
.gm-btn-secondary{background:transparent;color:var(--accent2);border:1px solid var(--accent2);margin-right:12px}
.gm-btn-secondary:hover{background:var(--accent2);color:#1a1008}
.game-play-screen{padding:var(--sp-4) var(--sp-5) var(--sp-5);background:linear-gradient(180deg,#1f1208 0%,#0e0805 100%)}
.game-steps-nav{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:var(--sp-4);flex-wrap:wrap}
.game-stage-info{
    display:flex;align-items:center;gap:var(--sp-3);
    padding:var(--sp-3) var(--sp-4);
    background:rgba(212,165,116,.1);
    border-radius:var(--radius-md);
    margin-bottom:var(--sp-3);
    border:1px solid rgba(212,165,116,.2);
}
.gsi-num{font-size:1.6rem;color:var(--accent);font-weight:700;font-family:var(--serif)}
.gsi-titles{flex:1}
.gsi-titles h3{margin:0;font-size:1.2rem;color:var(--accent2)}
.gsi-titles p{margin:0;font-size:.85rem;color:#d4a574;opacity:.75;font-family:var(--sans)}
.gsi-stats{display:flex;gap:var(--sp-4);font-size:.9rem;color:#d4a574}
.gsi-stats b{color:var(--accent);font-weight:700}
.game-instruction{color:#f5e6d3;opacity:.85;margin-bottom:var(--sp-3);text-align:center;font-size:.95rem;font-family:var(--sans)}
.game-canvas-wrap{display:flex;justify-content:center;background:rgba(0,0,0,.3);border-radius:var(--radius-md);padding:var(--sp-3);min-height:380px;position:relative}
.game-canvas{display:block;max-width:100%;height:auto;border-radius:8px;background:#1a1a2e;cursor:pointer}
.game-progress-row{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3)}
.gpr-bar{flex:1;height:8px;background:rgba(255,255,255,.1);border-radius:4px;overflow:hidden}
.gpr-bar-inner{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));transition:width .3s}
.gpr-text{color:var(--accent2);font-size:.9rem;min-width:80px;text-align:right}
.game-modal{
    position:absolute;inset:0;
    background:rgba(15,8,5,.85);
    display:flex;align-items:center;justify-content:center;
    z-index:10;
    backdrop-filter:blur(4px);
}
.gm-inner{
    background:linear-gradient(135deg,#2d1b00 0%,#1a1008 100%);
    padding:var(--sp-5) var(--sp-6);
    border-radius:var(--radius-lg);
    text-align:center;
    border:1px solid rgba(212,165,116,.3);
    min-width:300px;max-width:90%;
    box-shadow:0 20px 60px rgba(0,0,0,.5);
}
.gm-title{font-size:1.6rem;color:var(--accent2);margin-bottom:var(--sp-2);font-weight:600}
.gm-desc{color:#d4a574;font-size:.95rem;margin-bottom:var(--sp-4);font-family:var(--sans)}
.gm-row{display:flex;justify-content:center;gap:var(--sp-5);margin-bottom:var(--sp-4);flex-wrap:wrap;font-size:.95rem;color:#d4a574}
.gm-row b{color:var(--accent);font-weight:700;font-size:1.1rem;margin-left:6px}
.gm-stars{color:var(--accent);font-size:1.2rem;letter-spacing:4px}
.gm-final-grade{
    font-size:4rem;font-weight:700;color:var(--accent);
    font-family:var(--serif);
    text-shadow:0 4px 20px rgba(200,85,61,.5);
    margin:var(--sp-2) 0;
}
.gm-final-grade.grade-s{color:#d4a574}
.gm-final-grade.grade-a{color:var(--accent)}
.gm-final-grade.grade-b{color:#8d6e4c}
.gm-final-grade.grade-c{color:#666}
.gm-actions{display:flex;justify-content:center;gap:var(--sp-3);flex-wrap:wrap}

/* ===== paper-game 步骤导航（gp-step 兼容） ===== */
.gp-step{
    display:flex;align-items:center;gap:4px;
    padding:4px 10px;
    background:rgba(255,255,255,.06);
    border-radius:14px;
    font-size:.78rem;color:#d4a574;
    border:1px solid transparent;
}
.gp-step.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.gp-step.done{background:rgba(212,165,116,.2);color:var(--accent2)}
.gps-num{font-weight:700}
.gps-arrow{color:rgba(255,255,255,.3);font-size:.7rem}

/* ========== 图片灯箱（点击放大） ========== */
.slot-filled{cursor:zoom-in}
.slot-filled.hero-scene-bg{cursor:default}
.img-lightbox{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;background:rgba(20,12,8,.92);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);padding:5vh 5vw;animation:lbFade .25s ease}
.img-lightbox.open{display:flex}
.img-lightbox img{max-width:92vw;max-height:88vh;object-fit:contain;border-radius:var(--radius-md);box-shadow:0 30px 100px rgba(0,0,0,.6);background:#fff;animation:lbPop .3s cubic-bezier(.34,1.56,.64,1);transition:transform .12s ease-out}
.lb-caption{position:absolute;bottom:4vh;left:0;right:0;text-align:center;color:#f5e6d3;font-size:1rem;letter-spacing:.05em;padding:0 1rem;pointer-events:none;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.lb-close{position:absolute;top:3vh;right:3vw;width:44px;height:44px;border-radius:50%;border:none;background:rgba(255,255,255,.15);color:#fff;font-size:22px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .2s}
.lb-close:hover{background:rgba(255,255,255,.32);transform:rotate(90deg)}
.lb-hint{position:absolute;top:3vh;left:3vw;color:rgba(255,255,255,.55);font-size:.85rem;letter-spacing:.03em;pointer-events:none}
@keyframes lbFade{from{opacity:0}to{opacity:1}}

/* ========== 数字人文分析版块 ========== */
.dh-overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:60px}
.dh-overview-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:28px 22px;text-align:center;transition:transform .3s,box-shadow .3s}
.dh-overview-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(0,0,0,.08)}
.dh-ov-icon{font-size:2.4rem;margin-bottom:12px}
.dh-overview-card h3{font-family:var(--serif);font-size:1.05rem;color:var(--ink);margin-bottom:8px}
.dh-overview-card p{font-size:.85rem;color:var(--text-light);line-height:1.6;margin-bottom:16px}
.dh-ov-stat{display:flex;flex-direction:column;align-items:center}
.dh-ov-stat .dh-num{font-size:1.8rem;font-weight:800;color:var(--accent);font-family:var(--serif)}
.dh-ov-stat .dh-label{font-size:.78rem;color:var(--text-muted)}
.dh-ov-stat .dh-ov-note{display:block;font-size:.68rem;color:var(--text-light);opacity:.6;margin-top:1px}

/* DH Section */
.dh-section{margin-bottom:64px;padding:36px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg)}
.dh-section-header{margin-bottom:32px;padding-bottom:20px;border-bottom:1px solid var(--border)}
.dh-section-tag{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.12em;color:var(--accent);text-transform:uppercase;background:rgba(200,85,61,.08);padding:4px 14px;border-radius:20px;margin-bottom:10px}
.dh-section-header h2{font-family:var(--serif);font-size:var(--fs-h2);color:var(--ink);margin-bottom:8px}
.dh-section-desc{font-size:.92rem;color:var(--text-light);max-width:680px;line-height:1.7}

/* DH 标签页导航 */
.dh-tab-bar{display:flex;gap:4px;margin-bottom:0;padding:0 4px;border-bottom:2px solid var(--border);overflow-x:auto;scrollbar-width:none}
.dh-tab-bar::-webkit-scrollbar{display:none}
.dh-tab{flex:1;min-width:100px;padding:14px 8px;background:none;border:none;border-bottom:3px solid transparent;font-family:var(--sans);font-size:.85rem;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .3s cubic-bezier(.22,1,.36,1);display:flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;position:relative;bottom:-2px}
.dh-tab:hover{color:var(--accent);background:rgba(200,85,61,.03)}
.dh-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.dh-tab-icon{font-size:1rem}
.dh-overview-clickable{cursor:pointer}
.dh-overview-clickable:hover{border-color:var(--accent);box-shadow:0 8px 28px rgba(200,85,61,.12)}

/* DH 标签页面板 */
.dh-tab-panels{position:relative}
.dh-tab-panel{display:none;padding:36px;background:var(--card);border:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg);border-top:none;animation:dhPanelIn .35s ease}
.dh-tab-panel.active{display:block}
@keyframes dhPanelIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* 文化基因雷达图 */
.dh-gene-radar-wrap{display:flex;gap:40px;align-items:flex-start}
.dh-gene-radar{position:relative;width:280px;height:280px;flex-shrink:0}
.radar-center{position:absolute;top:50%;left:50%;width:8px;height:8px;background:var(--accent);border-radius:50%;transform:translate(-50%,-50%);z-index:3}
.radar-axis{position:absolute;width:120px;height:2px;background:rgba(200,85,61,.15);top:50%;left:50%;transform-origin:left center}
.axis-1{transform:rotate(0deg) translateX(20px)}.axis-2{transform:rotate(60deg) translateX(20px)}.axis-3{transform:rotate(120deg) translateX(20px)}
.axis-4{transform:rotate(180deg) translateX(20px)}.axis-5{transform:rotate(240deg) translateX(20px)}.axis-6{transform:rotate(300deg) translateX(20px)}
.axis-label{position:absolute;top:-20px;left:80px;font-size:.7rem;color:var(--text-muted);white-space:nowrap}
.axis-bar{width:0;height:6px;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:3px;position:absolute;top:-2px;transition:width 1s ease .3s;width:calc(var(--val)*100px)}
.radar-polygon{position:absolute;inset:0;width:100%;height:100%;animation:radarFadeIn .8s ease .5s both;opacity:0}
@keyframes radarFadeIn{to{opacity:1}}
.dh-gene-list{flex:1;display:flex;flex-direction:column;gap:10px;justify-content:flex-start}
.gene-item{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:10px;background:rgba(200,85,61,.03);transition:background .2s}
.gene-item:hover{background:rgba(200,85,61,.08)}
.gene-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.g1{background:#e74c3c}.g2{background:#e67e22}.g3{background:#f1c40f}.g4{background:#27ae60}.g5{background:#3498db}.g6{background:#9b59b6}
.gene-item strong{font-size:.88rem;color:var(--ink);min-width:110px}
.gene-item span{font-size:.82rem;color:var(--text-light)}

/* 时空分布 - 时间轴（左右紧凑布局） */
.dh-timeline-map{display:flex;flex-direction:row;gap:32px;align-items:stretch;justify-content:center}
.dh-timeline-side{flex:1;min-width:0;display:flex;flex-direction:column;gap:18px}
.dh-timeline-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.tl-sum-item{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px 10px;text-align:center;box-shadow:var(--shadow-xs);transition:all .3s}
.tl-sum-item:hover{border-color:rgba(200,85,61,.25);transform:translateY(-2px)}
.tl-sum-num{display:block;font-family:var(--serif);font-size:1.6rem;font-weight:800;color:var(--accent);line-height:1}
.tl-sum-label{display:block;font-size:.72rem;color:var(--text-muted);margin-top:6px;letter-spacing:.02em}
.dh-timeline{width:100%;display:flex;flex-direction:column;gap:0;position:relative;padding-left:32px}
.dh-timeline::before{content:'';position:absolute;left:15px;top:12px;bottom:12px;width:2px;background:linear-gradient(to bottom,var(--accent),var(--accent2),var(--gold));border-radius:1px;opacity:.35}
.dh-timeline .tl-item{position:relative;padding:10px 0 10px 22px;opacity:0;transform:translateX(-10px);animation:tlSlideIn .4s ease forwards}
.dh-timeline .tl-item:nth-child(1){animation-delay:.1s}.dh-timeline .tl-item:nth-child(2){animation-delay:.2s}.dh-timeline .tl-item:nth-child(3){animation-delay:.3s}
.dh-timeline .tl-item:nth-child(4){animation-delay:.4s}.dh-timeline .tl-item:nth-child(5){animation-delay:.5s}.dh-timeline .tl-item:nth-child(6){animation-delay:.6s}
@keyframes tlSlideIn{to{opacity:1;transform:translateX(0)}}
.tl-marker{position:absolute;left:-32px;top:16px;width:28px;height:28px;border-radius:50%;background:var(--bg);border:2px solid var(--border);z-index:2;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 4px rgba(200,85,61,.08)}
.tl-marker-icon{font-size:.85rem;line-height:1}
.tl-highlight .tl-marker{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 5px rgba(200,85,61,.15)}
.tl-highlight .tl-marker .tl-marker-icon{filter:grayscale(1) brightness(2)}
.tl-now .tl-marker{background:var(--accent2);border-color:var(--accent2);box-shadow:0 0 0 5px rgba(212,165,116,.2)}
.tl-content{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 16px;transition:all .3s}
.dh-timeline .tl-item:hover .tl-content{border-color:rgba(200,85,61,.25);box-shadow:0 6px 18px rgba(44,24,16,.05)}
.tl-year{font-size:.72rem;font-weight:700;color:var(--accent);letter-spacing:.04em;margin-bottom:4px;display:block}
.tl-content h4{font-size:.95rem;color:var(--ink);margin:4px 0 3px}
.tl-content p{font-size:.82rem;color:var(--text-light);line-height:1.65;margin:0}

/* 地图可视化（紧凑侧边卡片） */
.dh-map-viz{flex:0 0 320px;min-width:0;display:flex;flex-direction:column;gap:14px}
.map-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px 16px;text-align:center;box-shadow:var(--shadow-xs);flex:1;display:flex;flex-direction:column;justify-content:center}
.map-card h5{font-family:var(--serif);font-size:.95rem;color:var(--ink);margin:0 0 14px}
.map-placeholder-viz{position:relative;width:240px;height:240px;margin:0 auto;border-radius:50%;background:radial-gradient(circle,rgba(200,85,61,.06) 0%,transparent 70%)}
.map-ring{position:absolute;border-radius:50%;border:1px dashed;display:flex;align-items:center;justify-content:center;font-size:.58rem;color:var(--text-muted);text-align:center;padding:8px}
.ring-1{inset:18%;border-color:rgba(200,85,61,.35);background:rgba(200,85,61,.05)}
.ring-2{inset:8%;border-color:rgba(200,85,61,.22)}
.ring-3{inset:-2%;border-color:rgba(200,85,61,.13)}
.ring-4{inset:-12%;border-color:rgba(200,85,61,.08)}
.map-center-dot{position:absolute;top:50%;left:50%;width:10px;height:10px;background:var(--accent);border-radius:50%;transform:translate(-50%,-50%);z-index:2;box-shadow:0 0 12px rgba(200,85,61,.4)}
.map-pulse{position:absolute;top:50%;left:50%;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%);background:var(--accent);animation:mapPulse 2.2s ease-out infinite;z-index:1}
@keyframes mapPulse{0%{transform:translate(-50%,-50%) scale(1);opacity:.55}100%{transform:translate(-50%,-50%) scale(5);opacity:0}}
.map-labels span{position:absolute;font-size:.68rem;color:var(--text-light);white-space:nowrap}
.mlabel{padding:2px 8px;background:var(--card);border-radius:10px;border:1px solid var(--border);box-shadow:0 2px 6px rgba(44,24,16,.06)}
.mlabel.m1{top:48%;left:50%;transform:translate(-50%,-50%);z-index:3}
.mlabel.m2{top:22%;left:66%}
.mlabel.m3{top:64%;left:18%}
.mlabel.m4{top:34%;left:78%}
.dh-map-caption{text-align:center;font-size:.72rem;color:var(--text-muted);margin:12px 0 0}
.map-legend{background:rgba(200,85,61,.03);border:1px solid var(--border);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.map-legend-row{display:flex;align-items:center;gap:10px;font-size:.75rem;color:var(--text-light)}
.legend-dot{width:10px;height:10px;border-radius:50%}
.legend-line{width:18px;height:2px;border-radius:1px}
.legend-pulse{width:10px;height:10px;border-radius:50%;animation:mapPulse 2.2s ease-out infinite}

/* 传承谱系树 — 双中心并行结构 */
.dh-lineage-wrap{display:flex;flex-direction:column;gap:20px}
.dh-lineage-note{font-size:.8rem;color:var(--text-light);line-height:1.7;padding:12px 16px;background:rgba(200,85,61,.04);border-left:3px solid var(--accent);border-radius:0 8px 8px 0}
.dh-lineage-tree{display:flex;gap:24px;align-items:stretch;width:100%}
.tree-branch{flex:1;display:flex;flex-direction:column;align-items:center;min-width:0}
.tree-branch-label{font-size:.78rem;font-weight:700;color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid rgba(200,85,61,.2)}
.branch-pan{color:var(--accent2)}
.tree-divider{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1px;background:linear-gradient(to bottom,transparent,var(--border),var(--accent),var(--border),transparent);margin:40px 4px 60px;position:relative}
.tree-divider span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--card);padding:6px 12px;border-radius:12px;border:1px solid var(--border);font-size:.65rem;color:var(--text-muted);white-space:nowrap;font-weight:600;letter-spacing:.04em}
.dh-lineage-tree .tree-gen{width:auto;justify-content:center}
.node-pan{background:linear-gradient(135deg,#fff,rgba(212,165,116,.06));border-color:var(--accent2)}
.tree-gen{display:flex;gap:16px;justify-content:center;width:100%;padding:8px 0}
.tree-node{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px 20px;text-align:center;min-width:150px;transition:all .3s;cursor:default}
.tree-node:hover{box-shadow:0 6px 20px rgba(0,0,0,.08);transform:translateY(-2px)}
.highlight-node{border-color:var(--accent);background:linear-gradient(135deg,#fff,rgba(200,85,61,.04))}
.future-node{border-style:dashed;opacity:.8}
.node-avatar{font-size:1.6rem;margin-bottom:6px}
.node-era{display:block;font-size:.72rem;color:var(--text-muted);margin:2px 0}
.node-role{display:block;font-size:.76rem;color:var(--text-light);margin-top:4px}
.root-node{background:linear-gradient(135deg,rgba(200,85,61,.08),rgba(212,165,116,.08));border-color:var(--accent2)}
.tree-connector{width:2px;height:24px;background:linear-gradient(to bottom,var(--border),var(--accent));border-radius:1px;opacity:.4}

/* SNA 指标 */
.dh-sna-metrics{width:100%;background:rgba(200,85,61,.03);border:1px solid var(--border);border-radius:var(--radius-md);padding:22px 26px;display:flex;flex-direction:column;gap:16px}
.sna-header{display:flex;flex-direction:column;gap:6px}
.dh-sna-metrics h4{font-family:var(--serif);font-size:1.1rem;color:var(--ink);margin:0}
.sna-subtitle{font-size:.8rem;color:var(--text-muted);margin:0}
.sna-intro{font-size:.85rem;color:var(--text-light);line-height:1.8;background:var(--card);border-left:3px solid var(--accent);padding:12px 16px;border-radius:0 10px 10px 0}
.sna-intro strong{color:var(--accent)}
.sna-grid{display:flex;flex-direction:column;gap:14px}
.sna-item{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px 18px;transition:all .3s;box-shadow:var(--shadow-xs)}
.sna-item:hover{border-color:rgba(200,85,61,.25);box-shadow:0 6px 18px rgba(44,24,16,.06)}
.sna-main{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.sna-label{font-size:.9rem;color:var(--text-light);min-width:150px;white-space:nowrap;font-weight:600}
.sna-bar-wrap{flex:1;height:10px;background:rgba(0,0,0,.06);border-radius:5px;overflow:hidden}
.sna-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:5px;width:var(--w);transition:width 1s ease .3s}
.sna-val{font-size:.95rem;font-weight:800;color:var(--accent);min-width:44px;text-align:right}
.sna-detail{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding-top:12px;border-top:1px dashed var(--border)}
.sna-detail-col{display:flex;flex-direction:column;gap:6px}
.sna-detail-col b{font-size:.78rem;color:var(--accent);font-weight:700;letter-spacing:.02em}
.sna-detail-col span{font-size:.78rem;color:var(--text-light);line-height:1.7}
.sna-note{font-size:.72rem;color:var(--text-muted);margin-top:12px;line-height:1.5}

/* 文本分析 - 词云 */
.dh-text-analysis{display:flex;flex-direction:column;gap:32px}
.dh-wordcloud-area{text-align:center}
.wordcloud-viz{position:relative;width:100%;height:220px;background:linear-gradient(135deg,rgba(44,24,16,.02),rgba(200,85,61,.03));border-radius:var(--radius-md);margin-bottom:8px;overflow:hidden}
.wc-word{position:absolute;font-weight:700;color:var(--ink);transition:all .3s;cursor:default;white-space:nowrap;left:var(--x);top:var(--y)}
.wc-word:hover{color:var(--accent);transform:scale(1.15)}
.wc-size-1{font-size:.88rem;opacity:.6}.wc-size-2{font-size:1.15rem;opacity:.75}.wc-size-3{font-size:1.6rem;opacity:.9;color:var(--accent)}
.wc-caption{font-size:.78rem;color:var(--text-muted)}

/* 主题卡片 */
.dh-topics{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.topic-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:22px;transition:all .3s}
.topic-card:hover{box-shadow:0 8px 24px rgba(0,0,0,.06)}
.topic-highlight{border-left:3px solid var(--accent);background:linear-gradient(135deg,#fff,rgba(200,85,61,.03))}
.topic-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.topic-id{background:var(--accent);color:#fff;font-size:.72rem;font-weight:700;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.topic-header h4{font-size:.95rem;color:var(--ink)}
.topic-card p{font-size:.85rem;color:var(--text-light);line-height:1.7;margin-bottom:12px}
.topic-keywords{display:flex;flex-wrap:wrap;gap:6px}
.topic-keywords span{font-size:.74rem;padding:3px 10px;border-radius:14px;background:rgba(200,85,61,.07);color:var(--accent);border:1px solid rgba(200,85,61,.12)}

/* 结论 */
.dh-conclusion{background:linear-gradient(135deg,rgba(44,24,16,.04),rgba(200,85,61,.04))!important;border-color:rgba(200,85,61,.15)!important}
.dh-conclusion-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:24px}
.conclusion-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:28px}
.cc-main{grid-row:span 2}
.cc-icon{font-size:1.8rem;margin-bottom:12px}
.conclusion-card h3{font-family:var(--serif);font-size:1.05rem;color:var(--ink);margin-bottom:16px}
.cc-main ol{padding-left:20px;display:flex;flex-direction:column;gap:14px}
.cc-main li{font-size:.88rem;color:var(--text-light);line-height:1.7}
.cc-main li strong{color:var(--ink)}
.cc-side ul{list-style:none;padding:0;display:flex;flex-direction:column;gap:10px}
.cc-side ul li{font-size:.86rem;color:var(--text-light);padding:8px 12px;border-radius:8px;background:rgba(200,85,61,.03)}
.dh-footer-note{margin-top:28px;padding:18px 22px;background:rgba(212,165,116,.08);border-radius:var(--radius-md);border:1px solid rgba(212,165,116,.15)}
.dh-footer-note p{font-size:.82rem;color:var(--text-light);line-height:1.6;margin:0}

/* 响应式 */
@media(max-width:900px){
    .dh-overview-grid{grid-template-columns:repeat(2,1fr)}
    .dh-gene-radar-wrap{flex-direction:column;align-items:center}
    .dh-gene-radar{width:240px;height:240px}
    .dh-timeline-map{flex-direction:column;gap:24px}
    .dh-map-viz{width:100%;flex:1 1 auto;flex-direction:row;align-items:stretch}
    .map-card{flex:1}
    .map-legend{flex:0 0 180px;justify-content:center}
    .dh-lineage-wrap{flex-direction:column}
    .dh-lineage-tree{flex-direction:column;gap:32px}
    .tree-divider{width:auto;height:1px;flex-direction:row;margin:0 20px}
    .dh-sna-metrics{width:100%;padding:18px}
    .sna-main{flex-wrap:wrap;gap:8px}
    .sna-label{min-width:120px;flex:1}
    .sna-bar-wrap{min-width:120px}
    .sna-detail{grid-template-columns:1fr}
    .dh-topics{grid-template-columns:1fr}
    .dh-conclusion-grid{grid-template-columns:1fr}
    .cc-main{grid-row:auto}
}
@media(max-width:600px){
    .dh-overview-grid{grid-template-columns:1fr}
    .tree-gen{flex-direction:column;align-items:center}
    .nav-collapse-hint{display:none!important}
    .dh-map-viz{flex-direction:column}
    .map-legend{flex:1 1 auto}
    .map-placeholder-viz{width:220px;height:220px}
    .dh-timeline-summary{grid-template-columns:repeat(3,1fr)}
    .tl-sum-num{font-size:1.3rem}
}
@keyframes lbPop{from{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}

/* ============================================================
   设计升级层 v2 — 搜索 / AI蔡师傅 / 全局统一视觉规范
   原则：仅重构色彩、字体、间距、控件样式与微交互，
   不改动原有功能与交互逻辑；桌面 / 移动双适配。
   ============================================================ */

/* ---- 设计令牌补充（合并进 :root） ---- */
:root{
    --surface:#fffdf9;
    --glass:rgba(253,250,244,.82);
    --accent-soft:rgba(200,85,61,.08);
    --accent-soft2:rgba(212,164,116,.18);
    --shadow-xs:0 2px 8px rgba(44,24,16,.06);
    --radius-xl:22px;
    --ease-out:cubic-bezier(.22,1,.36,1);
}

/* ---- 全局焦点态（可访问性 + 清爽感） ---- */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
button{font-family:inherit}

/* ---- 标题统一装饰：居中渐变下划线 ---- */
.section-title,.topbar-title,.craft-heading{position:relative}
.section-title::after,.topbar-title::after{
    content:'';display:block;width:54px;height:3px;margin:14px auto 0;
    background:linear-gradient(90deg,var(--accent),var(--accent2));
    border-radius:2px
}
.craft-heading{text-align:center}
.craft-heading::after{
    content:'';display:block;width:46px;height:3px;margin:14px auto 0;
    background:linear-gradient(90deg,var(--accent),var(--accent2));
    border-radius:2px
}
.section-desc,.craft-sub,.topbar-desc{max-width:640px}

/* ---- 站内搜索面板 ---- */
.search-panel{
    position:fixed;top:64px;left:50%;
    transform:translateX(-50%) translateY(-12px);
    width:min(680px,92vw);z-index:1050;
    background:var(--bg);border:1px solid var(--border);
    border-radius:var(--radius-xl);
    box-shadow:0 24px 64px rgba(44,24,16,.20);
    padding:14px;opacity:0;visibility:hidden;pointer-events:none;
    transition:opacity .28s var(--ease-out),transform .28s var(--ease-out),visibility 0s .28s
}
.search-panel.open{
    opacity:1;visibility:visible;pointer-events:auto;
    transform:translateX(-50%) translateY(0);
    transition:opacity .28s var(--ease-out),transform .28s var(--ease-out),visibility 0s 0s
}
.search-box{
    display:flex;align-items:center;gap:10px;
    padding:11px 14px;border:1.5px solid var(--border);
    border-radius:14px;background:var(--surface);
    transition:border-color .2s,box-shadow .2s
}
.search-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.search-ico{color:var(--text-muted);flex:none}
.search-input{flex:1;border:none;background:transparent;font-size:1rem;color:var(--ink);outline:none;font-family:var(--sans);min-width:0}
.search-clear{
    border:none;background:rgba(44,24,16,.06);color:var(--text-muted);
    width:24px;height:24px;border-radius:50%;cursor:pointer;
    font-size:1.15rem;line-height:1;flex:none;transition:all .2s
}
.search-clear:hover{background:var(--accent);color:#fff}
.search-results{max-height:54vh;overflow-y:auto;margin-top:10px;scrollbar-width:thin}
.search-result{
    display:flex;align-items:center;gap:12px;width:100%;text-align:left;
    border:none;background:transparent;padding:11px 12px;
    border-radius:14px;cursor:pointer;transition:all .18s var(--ease-out)
}
.search-result:hover{background:var(--accent-soft);transform:translateX(3px)}
.sr-tag{flex:none;font-size:.72rem;padding:3px 10px;border-radius:20px;background:var(--accent-soft2);color:var(--accent3);font-weight:600;white-space:nowrap}
.sr-body{flex:1;min-width:0}
.sr-title{display:block;font-weight:600;color:var(--ink);font-size:.98rem}
.sr-title mark{background:rgba(200,85,61,.22);color:var(--accent);padding:0 2px;border-radius:3px}
.sr-desc{display:block;font-size:.82rem;color:var(--text-light);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sr-page{flex:none;font-size:.82rem;color:var(--accent);font-weight:600;white-space:nowrap}
.search-hint{padding:6px 4px}
.search-hint-label{font-size:.8rem;color:var(--text-muted)}
.search-hot{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.search-hot-tag{border:1px solid var(--border);background:var(--surface);color:var(--text-light);padding:6px 14px;border-radius:20px;font-size:.85rem;cursor:pointer;transition:all .2s}
.search-hot-tag:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.search-empty{padding:26px 12px;text-align:center;color:var(--text-light);font-size:.92rem;line-height:1.9}
.search-empty span{display:block;font-size:.8rem;color:var(--text-muted);margin-top:4px}
.search-foot{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);font-size:.74rem;color:var(--text-muted);text-align:center}
.search-hit{animation:searchHit 1.5s var(--ease-out)}
@keyframes searchHit{0%{box-shadow:0 0 0 0 rgba(200,85,61,.55)}100%{box-shadow:0 0 0 20px rgba(200,85,61,0)}}

/* ---- AI 蔡师傅 悬浮按钮 ---- */
.ai-cai-btn{
    position:fixed;bottom:calc(var(--copybar-h) + 16px);right:18px;z-index:940;
    width:46px;height:46px;border-radius:50%;border:1px solid rgba(200,85,61,.5);cursor:grab;
    display:flex;align-items:center;justify-content:center;color:var(--accent);
    background:var(--frost);backdrop-filter:blur(var(--frost-blur));-webkit-backdrop-filter:blur(var(--frost-blur));
    box-shadow:0 8px 26px rgba(200,85,61,.35),0 3px 10px rgba(0,0,0,.12);
    transition:all .3s cubic-bezier(.34,1.56,.64,1);
    touch-action:none;-webkit-user-select:none;user-select:none
}
.ai-cai-btn:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 12px 34px rgba(200,85,61,.55)}
.ai-cai-btn:active{transform:scale(.95)}
.ai-cai-btn.active{transform:scale(.92)}
/* 首屏 hero 在视野内时隐藏，避免悬浮按钮遮挡工笔插画氛围 */
.ai-cai-btn.hero-hidden{opacity:0;transform:translateY(16px) scale(.85);pointer-events:none}
/* 拖拽中：禁用过渡与形变，避免跟手抖动；拖完才恢复 */
.ai-cai-btn.dragging{cursor:grabbing;transition:none!important;transform:none!important}

/* 传承人官方来源标注条 */
.inh-source{font-size:.74rem;color:var(--text-muted);margin-top:10px;padding-top:8px;border-top:1px dashed rgba(212,165,116,.45);line-height:1.65}
.inh-source a{color:var(--accent);text-decoration:none;word-break:break-all}
.inh-source a:hover{text-decoration:underline}
.ai-cai-badge{
    position:absolute;top:-3px;right:-3px;width:22px;height:22px;
    border-radius:50%;background:var(--accent2);color:#fff;
    font-size:.7rem;font-weight:700;display:flex;align-items:center;justify-content:center;
    border:2px solid var(--bg);animation:badgePop .4s var(--ease-out)
}

/* ---- AI 蔡师傅 对话面板 ---- */
.ai-cai-panel{
    position:fixed;bottom:calc(var(--copybar-h) + 74px);right:16px;z-index:940;
    /* 约占视口 1/3 宽、4/5 高：从"小浮窗"升级为真正能读长答案的对话区 */
    width:min(33vw,520px);height:min(80vh,760px);
    max-height:calc(100vh - var(--copybar-h) - 110px);
    background:var(--frost);backdrop-filter:blur(var(--frost-blur));-webkit-backdrop-filter:blur(var(--frost-blur));border:1px solid var(--hairline);border-radius:16px;
    box-shadow:0 24px 70px rgba(44,24,16,.30);
    display:flex;flex-direction:column;overflow:hidden;
    opacity:0;visibility:hidden;transform:translateY(20px) scale(.96);
    transform-origin:bottom right;pointer-events:none;
    transition:opacity .32s cubic-bezier(.34,1.4,.64,1),transform .32s cubic-bezier(.34,1.4,.64,1),visibility 0s .32s
}
.ai-cai-panel.open{opacity:1;visibility:visible;transform:translateY(0) scale(1);pointer-events:auto;transition:opacity .32s cubic-bezier(.34,1.4,.64,1),transform .32s cubic-bezier(.34,1.4,.64,1),visibility 0s 0s}
.ai-cai-head{display:flex;align-items:center;gap:10px;padding:18px 16px;background:linear-gradient(180deg,rgba(252,247,235,.98) 0%,rgba(244,232,212,.95) 100%);color:var(--ink);border-bottom:1px solid rgba(200,85,61,.18);box-shadow:0 1px 0 rgba(255,255,255,.7) inset}
.ai-cai-avatar{flex:none;color:var(--accent2)}
/* 头像容器：放大至 48、加朱红描边 + 浮起阴影，提升辨识度 */
.cai-oldman-avatar{width:48px;height:48px;border-radius:50%;background:rgba(252,247,235,.6);padding:2px;border:1.2px solid rgba(200,85,61,.32);box-shadow:0 2px 8px rgba(58,36,24,.12);display:flex;align-items:center;justify-content:center;overflow:hidden}
/* 水墨老者头像（无动画，靠 SVG 笔触本身） */
.cai-oldman-img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:center;filter:drop-shadow(0 1px 2px rgba(44,24,16,.18))}
.ai-cai-title{flex:1;display:flex;flex-direction:column;line-height:1.3;min-width:0}
.ai-cai-title strong{font-family:var(--serif);font-size:1.05rem;color:var(--ink)}
.ai-cai-title span{font-size:.74rem;color:var(--accent);display:flex;align-items:center;gap:5px;margin-top:2px;font-weight:500}
.ai-cai-dot{width:7px;height:7px;border-radius:50%;background:#7bd88f;box-shadow:0 0 0 3px rgba(123,216,143,.28);display:inline-block;flex:none;animation:caiDotPulse 2.4s ease-in-out infinite}
@keyframes caiDotPulse{0%,100%{box-shadow:0 0 0 3px rgba(123,216,143,.28)}50%{box-shadow:0 0 0 5px rgba(123,216,143,.18)}}
.ai-cai-close{border:none;background:rgba(200,85,61,.18);color:var(--accent);width:38px;height:38px;border-radius:50%;font-size:1.5rem;cursor:pointer;line-height:1;flex:none;transition:all .3s ease;display:flex;align-items:center;justify-content:center;font-family:var(--sans)}
.ai-cai-close:hover{background:var(--accent);color:#fff;transform:rotate(90deg) scale(1.06);box-shadow:0 6px 18px rgba(200,85,61,.32)}
.ai-cai-close:active{transform:rotate(90deg) scale(.96)}
/* 头部 · 输入框收起按钮（▾/▴ 切换） */
.ai-cai-input-toggle{
    border:none;background:rgba(200,85,61,.18);color:var(--accent);
    width:32px;height:32px;border-radius:50%;font-size:.95rem;cursor:pointer;
    line-height:1;flex:none;transition:all .3s ease;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--sans)
}
.ai-cai-input-toggle:hover{background:var(--accent);color:#fff;transform:translateY(-1px) scale(1.04);box-shadow:0 4px 14px rgba(200,85,61,.28)}
.ai-cai-input-toggle:active{transform:translateY(0) scale(.96)}
.ai-cai-panel.input-collapsed .ai-cai-input-toggle{background:rgba(200,85,61,.18)}
/* 头部 · 清空对话按钮（↻） */
.ai-cai-reset{
    border:none;background:rgba(200,85,61,.10);color:var(--accent);
    width:32px;height:32px;border-radius:50%;font-size:1.2rem;cursor:pointer;
    line-height:1;flex:none;transition:all .3s ease;position:relative;
    display:flex;align-items:center;justify-content:center;
    font-family:var(--sans)
}
.ai-cai-reset:hover{background:var(--accent);color:#fff;transform:rotate(180deg) scale(1.04);box-shadow:0 4px 14px rgba(200,85,61,.28)}
.ai-cai-reset:active{transform:rotate(360deg) scale(.94)}
.ai-cai-reset[data-toast]:not([data-toast=""])::after{
    content:attr(data-toast);position:absolute;
    top:120%;right:0;background:rgba(58,36,24,.94);color:#fff;
    font-size:.72rem;padding:5px 10px;border-radius:6px;white-space:nowrap;
    opacity:0;pointer-events:none;transform:translateY(-4px);
    transition:opacity .28s ease,transform .28s ease;font-family:var(--sans);
    box-shadow:0 4px 14px rgba(58,36,24,.25)
}
.ai-cai-reset.show-toast::after{opacity:1;transform:translateY(0)}
/* 头部下方 meta 行（知识库条数 / 响应速度 / 本地性） */
.ai-cai-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 16px 9px;background:linear-gradient(180deg,rgba(244,232,212,.45),rgba(252,247,235,.45));border-bottom:1px solid rgba(200,85,61,.12);font-size:.7rem;color:var(--text-light)}
.ai-cai-meta-item{display:inline-flex;align-items:center;gap:3px}
.ai-cai-meta-sep{color:rgba(200,85,61,.4);font-size:.6rem}
/* 空状态占位卡（首次进入 / 无任何对话时显示，发送首条消息后自动隐藏） */
.ai-cai-welcome{margin:auto;padding:20px 18px;background:rgba(252,247,235,.92);background-image:var(--paper-grain);background-size:160px 160px;background-blend-mode:multiply;border:1px solid rgba(200,85,61,.18);border-radius:12px;box-shadow:var(--shadow-xs);font-size:.9rem;line-height:1.72;color:var(--text)}
.ai-cai-welcome-greet p{margin:6px 0}
.ai-cai-welcome-greet p:first-child strong{color:var(--accent);font-family:var(--serif);font-size:1rem}
.ai-cai-welcome-hint{margin-top:12px;padding-top:8px;border-top:1px dashed rgba(200,85,61,.22);font-size:.74rem;color:var(--text-muted);text-align:center}
/* 消息区 · 快捷话题折叠容器（默认 3 个，多余 3 个包在 .ai-cai-chips-more） */
.ai-cai-chips-more{display:none;flex-basis:100%;flex-wrap:wrap;gap:7px;margin-top:6px;padding-top:6px;border-top:1px dashed rgba(200,85,61,.18)}
.ai-cai-chips.expanded .ai-cai-chips-more{display:flex}
/* 消息区 · 快捷话题展开/收起按钮 */
.ai-cai-chips-toggle{
    border:1px dashed rgba(200,85,61,.32);background:transparent;color:var(--accent);
    font-size:.74rem;padding:4px 11px;border-radius:14px;cursor:pointer;transition:all .25s ease;
    align-self:flex-start;margin-top:6px;font-family:var(--sans);line-height:1.4
}
.ai-cai-chips-toggle:hover{background:var(--accent);border-style:solid;color:#fff;border-color:var(--accent);transform:translateY(-1px);box-shadow:0 4px 12px rgba(200,85,61,.25)}
.ai-cai-chips-toggle:active{transform:translateY(0) scale(.96)}
.ai-cai-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;background-color:#faf6ee;background-image:radial-gradient(ellipse at 50% 0%,rgba(200,85,61,.05) 0%,rgba(200,85,61,0) 70%);background-size:100% 100%;background-repeat:no-repeat;background-attachment:local;box-shadow:inset 0 8px 8px -8px rgba(58,36,24,.10);scrollbar-width:thin;scrollbar-color:rgba(200,85,61,.55) rgba(58,36,24,.08)}
.ai-cai-msgs::-webkit-scrollbar{width:8px;height:8px}
.ai-cai-msgs::-webkit-scrollbar-track{background:rgba(58,36,24,.06);border-radius:8px}
.ai-cai-msgs::-webkit-scrollbar-thumb{background:rgba(200,85,61,.5);border-radius:8px;border:1px solid rgba(252,248,240,.4);transition:background .25s ease}
.ai-cai-msgs::-webkit-scrollbar-thumb:hover{background:rgba(200,85,61,.78)}
.ai-cai-row{display:flex}
.ai-cai-row.me{justify-content:flex-end}
.ai-cai-bubble{max-width:82%;padding:11px 15px;border-radius:16px;font-size:.9rem;line-height:1.68;word-break:break-word}
.ai-cai-row.ai .ai-cai-bubble{
    background-color:rgba(252,248,240,.78);
    background-image:var(--paper-grain);
    background-size:160px 160px;
    background-blend-mode:multiply;
    color:var(--text);
    border:1px solid rgba(200,85,61,.18);
    border-bottom-left-radius:5px;
    box-shadow:var(--shadow-xs);
    -webkit-backdrop-filter:blur(8px) saturate(140%);
    backdrop-filter:blur(8px) saturate(140%)
}
.ai-cai-row.me .ai-cai-bubble{
    background:linear-gradient(135deg,var(--accent),#a83d28);
    color:#fff;
    border:1px solid rgba(255,255,255,.18);
    border-bottom-right-radius:5px;
    -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)
}
.ai-cai-bubble.typing{display:flex;gap:4px;align-items:center;padding:14px}
.ai-cai-bubble.typing span{width:7px;height:7px;border-radius:50%;background:var(--text-muted);animation:typing 1.2s infinite}
.ai-cai-bubble.typing span:nth-child(2){animation-delay:.2s}
.ai-cai-bubble.typing span:nth-child(3){animation-delay:.4s}
@keyframes typing{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-5px);opacity:1}}
/* 容器改为 column：上层 bar（折叠条）+ 下层 panel（双组 chip） */
.ai-cai-chips{
    display:flex;flex-direction:column;gap:0;
    background:linear-gradient(180deg,rgba(252,247,235,.55),rgba(244,232,212,.4));
    border-top:1px solid rgba(200,85,61,.18);
    border-bottom:1px solid rgba(200,85,61,.10);
    box-shadow:0 -4px 12px -6px rgba(58,36,24,.06);
    overflow:hidden;
    transition:max-height .32s ease;
}
/* 折叠条：始终可见（38px 高）*/
.ai-cai-chips-bar{
    display:flex;align-items:center;gap:8px;
    width:100%;height:38px;flex:none;
    padding:0 14px;
    background:transparent;border:none;cursor:pointer;
    color:var(--accent);font-family:var(--serif);font-size:.82rem;letter-spacing:.1em;
    transition:background .2s ease,color .2s ease;
    text-align:left;
}
.ai-cai-chips-bar:hover{background:rgba(200,85,61,.06)}
.ai-cai-chips-bar:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--accent-soft)}
.ai-cai-chips-bar-icon{flex:none;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(200,85,61,.10);color:var(--accent)}
.ai-cai-chips-bar-label{flex:1;color:var(--ink);font-weight:500}
.ai-cai-chips-bar-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:18px;padding:0 7px;border-radius:9px;background:var(--accent);color:#fff;font-size:.68rem;font-family:var(--sans);font-weight:600;letter-spacing:0}
.ai-cai-chips-bar-arrow{flex:none;width:18px;text-align:center;font-size:.82rem;color:var(--accent);transition:transform .32s ease;display:inline-block}
.ai-cai-chips.open .ai-cai-chips-bar-arrow{transform:rotate(180deg)}
/* 折叠面板：display:none/flex 物理切换，绝对不遮挡对话 */
.ai-cai-chips-panel{
    display:none;
    flex-direction:column;
    gap:8px;
    padding:10px 12px 12px;
}
.ai-cai-chips.open .ai-cai-chips-panel{
    display:flex;
}
.ai-cai-chip{
    border:1px solid rgba(200,85,61,.28);background:rgba(255,253,247,.92);
    color:var(--accent3);font-size:.8rem;padding:6px 13px;border-radius:18px;
    cursor:pointer;transition:all .28s cubic-bezier(.2,.8,.3,1);
    white-space:nowrap;flex:0 1 auto;max-width:calc(50% - 4px);
    box-shadow:0 1px 2px rgba(58,36,24,.06);font-family:var(--sans);
    min-width:0;overflow:hidden;text-overflow:ellipsis;
}
.ai-cai-chip:hover{border-color:var(--accent);color:#fff;background:var(--accent);transform:translateY(-2px);box-shadow:0 6px 16px rgba(200,85,61,.28)}
.ai-cai-chip:active{transform:translateY(0) scale(.96)}
/* 快捷话题 · 分组容器（强制 chip 双列：chip 最大 50% - gap） */
.ai-cai-chip-group{display:flex;flex-wrap:wrap;gap:6px;width:100%;margin-bottom:2px;align-items:flex-start}
.ai-cai-chip-label{font-family:var(--serif);font-size:.7rem;color:var(--accent);letter-spacing:.18em;width:100%;margin:6px 0 2px;display:flex;align-items:center;gap:6px}
.ai-cai-chip-label::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(200,85,61,.32),rgba(200,85,61,0))}
.ai-cai-chip-label:first-child{margin-top:2px}
/* 区域小标题：左右渐隐细线 + 中间楷体小字"快捷话题" */
.ai-cai-chips-heading{
    width:100%;display:flex;align-items:center;justify-content:center;gap:8px;
    font-size:.7rem;color:var(--accent);letter-spacing:.2em;
    padding:0 0 4px;
}
.ai-cai-chips-heading i{
    flex:1;height:1px;
    background:linear-gradient(90deg,rgba(200,85,61,0),rgba(200,85,61,.32),rgba(200,85,61,0));
}
.ai-cai-input{display:flex;gap:8px;padding:12px 14px;border-top:1px solid rgba(200,85,61,.18);background:linear-gradient(180deg,rgba(252,247,235,.7),rgba(244,232,212,.6));max-height:130px;overflow:hidden;transition:max-height .32s ease,padding .32s ease,border-color .32s ease;align-items:center}
.ai-cai-panel.input-collapsed .ai-cai-input{max-height:0;padding:0 14px;border-top-color:transparent}
.ai-cai-input-field{flex:1;min-width:0;border:1.5px solid rgba(200,85,61,.22);border-radius:24px;padding:11px 18px;font-size:.92rem;font-family:var(--sans);color:var(--ink);outline:none;background:rgba(252,248,240,.95);transition:border-color .2s,box-shadow .2s,background .2s;line-height:1.5;cursor:text;white-space:pre-wrap;word-break:break-word;overflow-y:auto;max-height:100px;-webkit-user-select:text;user-select:text}
.ai-cai-input-field:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);background:#fff;outline:none}
/* 空态占位（contenteditable 用 :empty + attr(data-placeholder)） */
.ai-cai-input-field:empty::before{content:attr(data-placeholder);color:#a89888;font-style:italic;pointer-events:none}
/* WebKit autofill 强制白色覆盖 */
.ai-cai-input-field:-webkit-autofill{box-shadow:0 0 0 1000px #fff inset !important;-webkit-text-fill-color:var(--ink) !important}

/* ---- 发送按钮 · 朱砂红圆按钮 + 国风纸鸢图标 ---- */
.ai-cai-send-btn{
    flex:none;width:38px;height:38px;border-radius:50%;
    border:none;background:linear-gradient(135deg,var(--accent) 0%,#b3432f 100%);
    color:#fff;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:all .28s cubic-bezier(.2,.8,.3,1);
    box-shadow:0 4px 12px rgba(200,85,61,.32),0 1px 2px rgba(58,36,24,.10) inset;
}
.ai-cai-send-btn svg{
    display:block;
    transform:translateX(-1px);
    transition:transform .35s cubic-bezier(.34,1.4,.64,1);
}
.ai-cai-send-btn:hover{
    background:linear-gradient(135deg,#d4624a 0%,var(--accent) 100%);
    box-shadow:0 6px 18px rgba(200,85,61,.45),0 1px 2px rgba(58,36,24,.10) inset;
}
.ai-cai-send-btn:hover svg{transform:translate(2px,-1px) rotate(-8deg)}
.ai-cai-send-btn:active{transform:translateY(0) scale(.92)}
.ai-cai-send-btn:disabled{
    background:linear-gradient(135deg,rgba(200,85,61,.45),rgba(179,67,47,.45));
    color:rgba(255,255,255,.6);
    cursor:not-allowed;
    box-shadow:none;
}
.ai-cai-send-btn:disabled svg{transform:none}
.ai-cai-panel.input-collapsed .ai-cai-send-btn{display:none}

/* ---- AI跳转按钮 & 增强样式 ---- */
.cai-thinking-text{font-size:.78rem;color:var(--text-muted);margin-right:8px;white-space:nowrap}
.ai-cai-bubble.typing{padding:10px 14px!important}
.ai-cai-row.ai .ai-cai-bubble strong{color:var(--accent);font-weight:700}
.cai-jump{display:inline-flex;align-items:center;gap:4px;margin-top:10px;padding:7px 14px;background:linear-gradient(135deg,rgba(200,85,61,.08),rgba(212,165,116,.1));border:1px solid rgba(200,85,61,.2);border-radius:20px;color:var(--accent);font-size:.82rem;cursor:pointer;transition:all .25s var(--ease-out);width:fit-content;text-decoration:none}
.cai-jump:hover{background:var(--accent);color:#fff;border-color:var(--accent);transform:translateX(3px);box-shadow:0 4px 12px rgba(200,85,61,.25)}
/* AI气泡中的简单表格 */
.ai-cai-row.ai .ai-cai-bubble table{width:100%;border-collapse:collapse;margin:8px 0;font-size:.84rem}
.ai-cai-row.ai .ai-cai-bubble th,.ai-cai-row.ai .ai-cai-bubble td{padding:4px 8px;border:1px solid var(--border);text-align:left}
.ai-cai-row.ai .ai-cai-bubble th{background:rgba(200,85,61,.05);font-weight:600;color:var(--ink)}

/* ---- 新组件响应式 ---- */
@media(max-width:600px){
    .search-panel{top:66px;width:94vw}
    .ai-cai-panel{bottom:84px;right:12px;width:94vw;height:86vh}
    .ai-cai-btn{right:14px;bottom:calc(var(--copybar-h) + 12px)}
}
@media(prefers-reduced-motion:reduce){
    .ai-cai-btn,.search-panel,.ai-cai-panel{transition:none}
}

/* ========== 原悬浮水印与逐页署名已移除，版权由 #siteCopyBar 固定条承担 ========== */

/* ========== 实拍图片来源标注（T10） ========== */
.img-src-dot{position:absolute;right:8px;bottom:8px;width:12px;height:12px;border-radius:50%;background:rgba(200,85,61,.85);border:2px solid rgba(255,255,255,.8);cursor:pointer;padding:0;z-index:4;box-shadow:0 1px 4px rgba(0,0,0,.3);transition:transform .2s}
.img-src-dot:hover{transform:scale(1.15)}
.src-modal{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;background:rgba(20,12,6,.5);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.src-modal-card{position:relative;max-width:360px;width:90vw;background:var(--frost);backdrop-filter:blur(var(--frost-blur));-webkit-backdrop-filter:blur(var(--frost-blur));border:1px solid var(--hairline);border-radius:16px;padding:24px 26px;color:var(--ink);font-family:var(--sans);box-shadow:0 20px 60px rgba(0,0,0,.35)}
.src-modal-card h4{font-family:var(--serif);font-size:1.1rem;margin:0 0 12px;color:var(--accent)}
.src-modal-card p{margin:6px 0;font-size:.9rem;color:#5a4636;line-height:1.7}
.src-pending{color:var(--text-muted);font-style:italic}
.src-modal-close{position:absolute;top:10px;right:12px;border:none;background:rgba(0,0,0,.06);color:var(--ink);width:28px;height:28px;border-radius:50%;font-size:1.2rem;cursor:pointer;line-height:1}

/* ============================================================
 * Tooltip（hover/focus/touch 长按 通用提示）
 * ========================================================== */
#shqTooltip{
    position:fixed;
    top:0;left:0;
    z-index:1100;          /* 高于顶部导航（951）与 AI 弹窗（1050），但不挡 lightbox(3000)/modal(2000) */
    width:max-content;
    max-width:min(280px,calc(100vw - 24px));
    padding:11px 14px 12px;
    background:linear-gradient(180deg,#fbf6ea 0%,#f5ede0 100%);
    border:1.2px solid rgba(58,36,24,.55);
    border-radius:10px;
    box-shadow:
        0 4px 18px rgba(58,36,24,.18),
        0 1px 0 rgba(255,250,242,.7) inset;
    color:var(--ink,#2c1810);
    font-family:var(--sans,"Noto Sans SC",sans-serif);
    font-size:.82rem;
    line-height:1.55;
    letter-spacing:.01em;
    /* 默认隐藏 */
    opacity:0;
    transform:translateY(6px) scale(.985);
    transform-origin:center top;
    pointer-events:none;
    transition:opacity .18s ease,transform .22s cubic-bezier(.2,.6,.2,1);
    will-change:opacity,transform;
    /* 关闭状态时仍然参与布局测 offset 尺寸用，所以 visibility 切换；显示后才可见 */
    visibility:hidden;
}
#shqTooltip.shq-tip-visible{visibility:visible}
#shqTooltip.shq-tip-show{
    opacity:1;
    transform:translateY(0) scale(1);
    pointer-events:auto;
}
/* 倒三角箭头（旋转45度的小方块，被外阴影掩盖下边） */
#shqTooltip .shq-tip-arrow{
    position:absolute;
    width:10px;height:10px;
    background:#fbf6ea;
    border-left:1.2px solid rgba(58,36,24,.55);
    border-top:1.2px solid rgba(58,36,24,.55);
    transform:translate(-50%,-50%) rotate(45deg);
    pointer-events:none;
    /* 让箭头两侧的描边只露一边 */
    box-shadow:0 0 0 4px #fbf6ea;
}
/* 朝下箭头（tooltip 在元素上方时） */
#shqTooltip[data-placement="bottom"] .shq-tip-arrow{
    bottom:-5px;
    transform:translate(-50%,0) rotate(225deg);  /* 倒过来，朝下 */
}
/* 朝上箭头（tooltip 在元素下方时） */
#shqTooltip[data-placement="top"] .shq-tip-arrow{
    top:0;
    transform:translate(-50%,-50%) rotate(45deg);
}
/* 行结构 */
#shqTooltip .shq-tip-row{
    display:flex;
    align-items:flex-start;
    gap:8px;
}
#shqTooltip .shq-tip-row + .shq-tip-row{margin-top:6px}
#shqTooltip .shq-tip-func{
    color:var(--ink,#2c1810);
    font-weight:600;
    font-family:var(--serif,"Noto Serif SC",serif);
    font-size:.86rem;
}
#shqTooltip .shq-tip-val{
    color:#6a5440;
    font-weight:400;
}
#shqTooltip .shq-tip-dot{
    flex-shrink:0;
    width:5px;height:5px;
    background:var(--accent,#c8553d);
    border-radius:50%;
    margin-top:.5em;
    box-shadow:0 0 0 2px rgba(200,85,61,.12);
}
#shqTooltip .shq-tip-text{flex:1;min-width:0}

/* 触摸设备：禁用 hover（js 已判断，但保险起见） */
@media (hover:none){
    /* 不禁用：tooltip 模块已通过 touchstart 长按接管 */
}
/* 移动端上下结构：让多行布局更紧凑 */
@media (max-width:768px){
    #shqTooltip{
        max-width:min(240px,calc(100vw - 32px));
        font-size:.78rem;
        padding:10px 12px;
    }
}


/* ============================================================
 * 性能优化区（2026-09 新增，仅降低渲染开销，不删任何内容/动效定义）
 * ============================================================ */

/* 非激活页跳过子树渲染（保留 DOM/布局/滚动位置，切页淡入淡出不受影响）。
   content-visibility 兼容性兜底：旧浏览器会忽略该属性，等价于无改动。 */
.page{content-visibility:hidden}
.page.active{content-visibility:visible}

/* 全站常驻水光降级为低频呼吸：视觉保留、GPU 逐帧重绘成本归零 */
@media (prefers-reduced-motion: no-preference){
    .atm-waterglint{animation-duration:26s}
    .hero-waterglint{animation-duration:22s}
}

/* 移动端/触屏：进一步降低全屏特效层（水光/雾/纸纹）开销 */
@media (hover:none) and (pointer:coarse){
    .atm-waterglint{animation:none;opacity:.5}
    .hero-waterglint{animation:none;opacity:.7}
    .hero-mist{animation:none}
    .back-to-top,.tn-drawer-mask{transition:none}
}
