// ============================================================
// 禅心问答 · 卡片展开/收起 (2026-04-24)
// ============================================================
window.toggleDialogCard = function(cardEl) {
var isActive = cardEl.classList.contains('active');
// 收起所有
var allCards = document.querySelectorAll('.zen-dialog-card');
for (var i = 0; i < allCards.length; i++) {
allCards[i].classList.remove('active');
}
// 如果不是当前激活的,则展开
if (!isActive) {
cardEl.classList.add('active');
}
};
// ============================================================
// 禅心问答 · 随机叩问 (2026-04-24 增强)
// ============================================================
window.zyRandomQuestion = function() {
var cards = document.querySelectorAll('.zen-dialog-card');
if (!cards || cards.length === 0) return;
// 收起所有卡片
for (var i = 0; i < cards.length; i++) {
cards[i].classList.remove('active');
}
// 随机选一张
var randomIdx = Math.floor(Math.random() * cards.length);
cards[randomIdx].classList.add('active');
// 滚动到这张卡片
cards[randomIdx].scrollIntoView({behavior: 'smooth', block: 'center'});
// 高亮动画
cards[randomIdx].style.transition = 'box-shadow 0.3s ease';
cards[randomIdx].style.boxShadow = '0 0 0 3px rgba(184,134,11,0.3)';
setTimeout(function() {
cards[randomIdx].style.boxShadow = '';
}, 1500);
};
// ============================================================
// 禅茶一歇 · Zen Tea Break (2026-04-25 战略新增)
// ============================================================
// --- 数据源 ---
var ztbVerses = [
{text:'菩提本无树,明镜亦非台。
本来无一物,何处惹尘埃。', src:'六祖慧能'},
{text:'春有百花秋有月,夏有凉风冬有雪。
若无闲事挂心头,便是人间好时节。', src:'无门慧开'},
{text:'千山万水不曾遮,处处相逢岁月赊。
野老门前无别事,朝朝惟见水生花。', src:'虚云老和尚'},
{text:'空手把锄头,步行骑水牛。
人从桥上过,桥流水不流。', src:'傅大士'},
{text:'终日寻春不见春,芒鞋踏破岭头云。
归来偶把梅花嗅,春在枝头已十分。', src:'无尽藏比丘尼'},
{text:'庐山烟雨浙江潮,未到千般恨不消。
到得还来别无事,庐山烟雨浙江潮。', src:'苏东坡'},
{text:'手把青秧插满田,低头便见水中天。
心地清净方为道,退步原来是向前。', src:'布袋和尚'},
{text:'一树春风有两般,南枝向暖北枝寒。
现前一段西来意,一片西飞一片东。', src:'苏东坡'},
{text:'溪声尽是广长舌,山色无非清净身。
夜来八万四千偈,他日如何举似人。', src:'苏东坡'}
];
var ztbPerspectives = [
{before:'「堵车好烦,浪费时间」', after:'「此刻无人打扰,正好观息」'},
{before:'「工作压力好大,撑不住了」', after:'「压力是心在告诉我:停下来看看」'},
{before:'「为什么别人都比我好」', after:'「别人的好,与我何干?我走我的路」'},
{before:'「失眠了,明天一定很糟糕」', after:'「睡不着,那就安心躺着。夜很静」'},
{before:'「做了好多事却没有结果」', after:'「种子发芽之前,土是看不见动静的」'},
{before:'「他/她为什么这样对我」', after:'「别人的行为是别人的因果,我的反应是我的修行」'},
{before:'「我太孤独了,没人理解我」', after:'「独处是与自己相遇的时刻。你一直都在」'},
{before:'「时间不够用,什么都没做」', after:'「你正在呼吸,这就够了。其他都是加法」'},
{before:'「老了一岁,又虚度了」', after:'「又多活了一年。活着本身,就是最大的成就」'},
{before:'「怕出错,不敢开始」', after:'「错了又怎样?禅说:迷时师度,悟时自度」'},
{before:'「生活一成不变,无聊透顶」', after:'「不变的是风景,变化的是你看风景的心」'},
{before:'「这个世界太乱了」', after:'「外界的乱是修行的磨刀石。心静了,世界就静了」'}
];
var ztbVerseIndex = 0;
var ztbPerspIndex = 0;
// --- 翻牌 ---
window.ztbFlipCard = function(cardEl) {
cardEl.classList.toggle('flipped');
};
// --- 换一偈 ---
window.ztbRefreshVerse = function() {
ztbVerseIndex = (ztbVerseIndex + 1) % ztbVerses.length;
var v = ztbVerses[ztbVerseIndex];
document.getElementById('ztbVerse').innerHTML = v.text;
document.getElementById('ztbVerseSource').textContent = '— ' + v.src;
};
// --- 换一念 ---
window.ztbRefreshPerspective = function() {
ztbPerspIndex = (ztbPerspIndex + 1) % ztbPerspectives.length;
var p = ztbPerspectives[ztbPerspIndex];
document.getElementById('ztbBefore').textContent = p.before;
document.getElementById('ztbAfter').textContent = p.after;
};
// --- 十秒正念 ---
var ztbMicroTimer = null;
window.ztbStartMicroZen = function() {
var card = document.getElementById('ztbCardC');
var front = document.getElementById('ztbFrontC');
var back = document.getElementById('ztbBackC');
var timerEl = document.getElementById('ztbMicroTimer');
var textEl = document.getElementById('ztbMicroText');
// 如果正在运行,停止
if (ztbMicroTimer) {
clearInterval(ztbMicroTimer);
ztbMicroTimer = null;
front.style.display = '';
back.style.display = 'none';
timerEl.textContent = '10';
textEl.textContent = '呼吸...';
return;
}
// 显示背面
front.style.display = 'none';
back.style.display = 'flex';
var count = 10;
timerEl.textContent = count;
var phases = ['吸气...', '屏住...', '呼气...', '静默...'];
var phaseIdx = 0;
textEl.textContent = phases[0];
ztbMicroTimer = setInterval(function() {
count--;
timerEl.textContent = count;
// 每2-3秒切换呼吸阶段
if (count === 7 || count === 5 || count === 2) {
phaseIdx = (phaseIdx + 1) % phases.length;
textEl.textContent = phases[phaseIdx];
}
if (count <= 0) {
clearInterval(ztbMicroTimer);
ztbMicroTimer = null;
textEl.textContent = '善。';
timerEl.textContent = '✓';
// 3秒后恢复
setTimeout(function() {
front.style.display = '';
back.style.display = 'none';
timerEl.textContent = '10';
textEl.textContent = '呼吸...';
}, 3000);
}
}, 1000);
};
// 随机初始化(基于日期)
(function initZtb() {
var today = new Date();
var dayIdx = today.getFullYear() * 366 + today.getMonth() * 31 + today.getDate();
ztbVerseIndex = dayIdx % ztbVerses.length;
ztbPerspIndex = dayIdx % ztbPerspectives.length;
var v = ztbVerses[ztbVerseIndex];
document.getElementById('ztbVerse').innerHTML = v.text;
document.getElementById('ztbVerseSource').textContent = '— ' + v.src;
var p = ztbPerspectives[ztbPerspIndex];
document.getElementById('ztbBefore').textContent = p.before;
document.getElementById('ztbAfter').textContent = p.after;
})();