From a90f348061679f4ef0403ad09d4deca5f4fb030c Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Thu, 1 Oct 2026 08:40:05 +0000 Subject: [PATCH] =?UTF-8?q?feat(=E9=A6=96=E9=A1=B5):=203D=20=E5=A9=B4?= =?UTF-8?q?=E5=84=BF=E6=88=BF=E5=85=A5=E5=8F=A3=E4=B8=89=E7=89=88=E2=80=94?= =?UTF-8?q?=E2=80=94=E4=BB=8A=E5=A4=A9=E7=9A=84=E5=8A=A8=E7=BA=BF=E4=B8=8E?= =?UTF-8?q?=E4=B9=A6=E6=9E=B6=E4=B9=8B=E9=97=B4=E5=BC=80=E4=B8=80=E9=81=93?= =?UTF-8?q?=E7=A9=BA=E9=9A=99=EF=BC=8C=E6=88=BF=E9=97=B4=E9=93=BA=E5=9C=A8?= =?UTF-8?q?=E6=95=B4=E9=A1=B5=E8=83=8C=E5=90=8E=E9=9A=8F=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E8=A7=86=E5=B7=AE=E9=9C=B2=E5=87=BA=EF=BC=8C=E3=80=8C=E8=BF=9B?= =?UTF-8?q?=E5=8E=BB=E5=B8=83=E7=BD=AE=E3=80=8D=E6=8C=89=E9=92=AE=E8=B7=B3?= =?UTF-8?q?=E5=85=A5=E5=B9=B6=E5=B8=A6=20return=5Furl=20(v26100112)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- assets/img/nursery-peek.jpg | Bin 0 -> 25719 bytes index.html | 70 +++++------------- js/app.js | 111 ++++++++--------------------- mama-box.css | 137 +++++++++--------------------------- 4 files changed, 83 insertions(+), 235 deletions(-) create mode 100644 assets/img/nursery-peek.jpg diff --git a/assets/img/nursery-peek.jpg b/assets/img/nursery-peek.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4b3d65fd58313b8b3c3bff2cd2482a2e215e592 GIT binary patch literal 25719 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 Q0ptkSvIR~0NxUrnFX4j5IRF3v literal 0 HcmV?d00001 diff --git a/index.html b/index.html index c99cfcb..4da1345 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ 兜爸心选 · 孕育陪伴 - + @@ -456,6 +456,24 @@ ⚠️ 纸团飞进树洞的动画靠 Element.animate;不支持的老内核直接跳到「已收好」,不影响收存。 --> + +
+ + 往里看看 · 3D 婴儿房 +
+
宝宝的房间做孕期任务攒兜豆,一件件布置好
+ +
+
+ -
- -
diff --git a/js/app.js b/js/app.js index 6a128b2..e390097 100644 --- a/js/app.js +++ b/js/app.js @@ -3,7 +3,7 @@ (function () { 'use strict'; /* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */ - var VER = '26100111'; + var VER = '26100112'; const $ = (s, c) => (c || document).querySelector(s); const $$ = (s, c) => Array.from((c || document).querySelectorAll(s)); @@ -3098,104 +3098,51 @@ }, 2600); })(); - /* ================= 3D 婴儿房 · 入口(2026-10-01 二版:走廊尽头的门)================= - 设计和取舍写在 index.html 的 #nursery 注释里。地址由「3D 婴儿房」会话(33d6c837)维护,对方目前不读任何参数。 - · 布置进度**只按孕周推演**(首页读不到房里真实摆了什么);syncPregnancy() 每次都会调 nurseryRender()。 - · 三态:preg(有真实孕周)/ born(产后,全布置好、门敞开)/ empty(没建档,空房间 + 引导填预产期)。 */ + /* ================= 3D 婴儿房 · 页面上的一道空隙(2026-10-01 三版)================= + 设计写在 index.html 的 #nursery 注释里。地址由「3D 婴儿房」会话(33d6c837)维护; + 带 return_url(首页净地址,不含 hash),对方返回按钮读到就跳回来。syncPregnancy() 每次都会调 nurseryRender()。 */ const NURSERY_URL = 'https://beian3.douba.top/yef/'; const NURSERY_ID = 'yef-nursery'; - const NY_STEPS = [ - { w: 4, k: 'wall', n: '粉墙', t: '粉墙刷好了' }, - { w: 12, k: 'curtain', n: '小窗帘', t: '小窗帘挂上了' }, - { w: 16, k: 'rug', n: '软地毯', t: '软地毯铺好了' }, - { w: 20, k: 'crib', n: '小床', t: '小床搬进来了' }, - { w: 24, k: 'mobile', n: '床头风铃', t: '床头风铃挂上了' }, - { w: 28, k: 'lamp', n: '小夜灯', t: '小夜灯装好了' }, - { w: 32, k: 'bear', n: '玩偶熊', t: '玩偶熊住进来了' }, - { w: 36, k: 'bag', n: '待产包', t: '待产包放在门口了' }, - { w: 39, k: 'stars', n: '星星灯', t: '星星灯亮起来了' } - ]; - let nyLines = [], nyLineIdx = 0; function nurseryRender() { - const sec = $('#nursery'); - if (!sec) return; + if (!$('#nursery')) return; const nm = state.babyName || '宝宝'; - const mode = state.postpartum ? 'born' : (state.pregEmpty === false && state.week) ? 'preg' : 'empty'; - const wk = mode === 'born' ? 99 : mode === 'preg' ? state.week : 0; - const done = NY_STEPS.filter(st => wk >= st.w); - const last = done[done.length - 1], next = NY_STEPS[done.length]; - sec.classList.toggle('is-born', mode === 'born'); - $$('#nursery [data-k]').forEach((g) => { - const k = g.getAttribute('data-k'); - g.classList.toggle('on', done.some(st => st.k === k)); - g.classList.toggle('new', mode === 'preg' && !!last && last.k === k && done.length > 1); - }); - const dots = $('#nyDots'); - dots.innerHTML = NY_STEPS.map((st, i) => - '').join(''); - dots.style.setProperty('--p', done.length ? ((done.length - 1) / (NY_STEPS.length - 1) * 100).toFixed(1) + '%' : '0%'); - $('#nySign').textContent = nm + '的房间'; - /* 入住倒计时:预产期 − 今天(按手机本地日期取整天) */ + $('#nyTitle').textContent = nm + '的房间'; let days = null; - if (mode === 'preg' && state.due) { + if (!state.postpartum && state.pregEmpty === false && state.due) { const t = new Date(); t.setHours(0, 0, 0, 0); days = Math.round((state.due - t) / 864e5); } - const cal = (top, num, unit, foot) => { - $('#nyCalTop').textContent = top; $('#nyCalNum').textContent = num; - $('#nyCalUnit').textContent = unit; $('#nyCalFoot').textContent = foot; - }; - if (mode === 'born') cal('已入住', state.babyAgeDays == null ? '♥' : state.babyAgeDays, state.babyAgeDays == null ? '' : '天', '欢迎回家'); - else if (days != null && days > 0) cal('入住倒计时', days, '天', (state.due.getMonth() + 1) + '月' + state.due.getDate() + '日'); - else if (days != null) cal('入住倒计时', '0', '天', '随时入住'); - else cal('入住日', '?', '', '填预产期'); - if (mode === 'born') { - $('#nyTitle').textContent = nm + '已经住进来啦'; - $('#nyProg').innerHTML = '房间布置好了 9/9,再给 TA 添点新东西吧'; - nyLines = ['这是我的房间!', '妈妈,再给我添件新玩具吧~']; - } else if (mode === 'preg') { - $('#nyTitle').textContent = '第 ' + wk + ' 周 · ' + (last ? last.t : '房间开始布置啦'); - $('#nyProg').innerHTML = '已布置 ' + done.length + '/9' + - (next ? ' · 下一件 ' + next.n : ' · 全都布置好啦'); - nyLines = ['妈妈,我的房间布置好了吗?']; - if (last && done.length > 1) nyLines.push('听说' + last.n + '到了,我能看看吗?'); - if (next) nyLines.push('我还想要' + next.n + '~'); - if (days > 0) nyLines.push('再过 ' + days + ' 天,我就搬进来啦'); - } else { - $('#nyTitle').textContent = nm + '的房间 · 还空着呢'; - $('#nyProg').innerHTML = '填好预产期,房间会跟着孕周一件件布置好'; - nyLines = ['妈妈,我的房间在哪呀?', '告诉我预产期,我就知道哪天搬进来啦']; - } - nyLineIdx = 0; - $('#nyBubble').textContent = nyLines[0]; + $('#nySub').innerHTML = state.postpartum ? 'TA 已经住进来啦,再添点新东西吧' + : days > 0 ? '还有 ' + days + ' 天入住 · 攒兜豆把它布置好' + : days != null ? 'TA 随时会住进来,快去布置好' + : '做孕期任务攒兜豆,一件件布置好'; } (function nurseryInit() { const sec = $('#nursery'); if (!sec) return; - const card = $('#nyCard'), bub = $('#nyBubble'); - const still = window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches; - card.addEventListener('click', () => { - if (card.classList.contains('is-opening')) return; - card.classList.add('is-opening'); - setTimeout(() => jumpApp(NURSERY_URL, NURSERY_ID), still ? 0 : 700); - }); - /* 从婴儿房返回(bfcache 恢复)时把门关回虚掩 */ - window.addEventListener('pageshow', () => card.classList.remove('is-opening')); + $('#nyBtn').addEventListener('click', () => + jumpApp(NURSERY_URL + '?return_url=' + encodeURIComponent(location.origin + location.pathname), NURSERY_ID)); + /* 视差:图层始终对齐 .screen 的可视区 → 页面滚、房间不动,像铺在整页背后 */ + const layer = $('#nypLayer'), scr = sec.closest('.screen'); + let raf = 0; + const place = () => { + raf = 0; + if (!scr) return; + const s = scr.getBoundingClientRect(), r = sec.getBoundingClientRect(); + if (!s.height || !r.height) return; + layer.style.height = s.height + 'px'; + layer.style.transform = 'translate3d(0,' + Math.round(s.top - r.top) + 'px,0)'; + }; + const req = () => { if (!raf) raf = requestAnimationFrame(place); }; + if (scr) scr.addEventListener('scroll', req, { passive: true }); + window.addEventListener('resize', req); + if ('IntersectionObserver' in window) new IntersectionObserver(req).observe(sec); + place(); const tick = () => { const h = new Date(Date.now() + 8 * 3600e3).getUTCHours(); // 北京时间 sec.classList.toggle('is-night', h >= 19 || h < 6); }; tick(); setInterval(tick, 600e3); - /* 气泡轮播:一句 4.5 秒,淡出换下一句 */ - if (!still) setInterval(() => { - if (nyLines.length < 2 || document.hidden) return; - bub.classList.add('out'); - setTimeout(() => { - nyLineIdx = (nyLineIdx + 1) % nyLines.length; - bub.textContent = nyLines[nyLineIdx]; - bub.classList.remove('out'); - }, 350); - }, 4500); nurseryRender(); })(); diff --git a/mama-box.css b/mama-box.css index 21e82a9..bc2dd03 100644 --- a/mama-box.css +++ b/mama-box.css @@ -414,7 +414,7 @@ a.skip:focus{left:16px;top:16px} 对齐的是内容,出血的是底色,这两件事要分开。 ⚠️ 三块的圆角、底色、左右内边距改成在这里一处定义。以后要调,改这一条, 别再回到各自的规则里单独写,那正是上一稿乱掉的原因。 */ -.tool-dock,.game-promo,.preg-tips,.today-line,.shelf,.nursery{ +.tool-dock,.game-promo,.preg-tips,.today-line,.shelf{ margin:0 -26px;padding:16px 26px 18px;border-radius:26px; background-color:#fff; /* ⚠️ 这两条是一对,缺一不可,而且必须一起看: @@ -428,7 +428,7 @@ a.skip:focus{left:16px;top:16px} /* 块间距。给后两块,第一块的上间距另有规则(来信卡收放要用)。 ⚠️ 这是**块与块之间**的缝。某一块自己内部觉得挤,要调的是那块的 padding, 不是这里 —— 改这里会把三块的关系一起改掉。 */ -.tool-dock,.game-promo,.preg-tips,.today-line,.shelf,.nursery{margin-top:16px} +.tool-dock,.game-promo,.preg-tips,.today-line,.shelf{margin-top:16px} /* ===== 后两块的暖色渐变底(本批新增)===== 用户原话:「在那个宝宝的今日脚印那块,稍微给背景它加一点渐变」 @@ -560,106 +560,39 @@ a.skip:focus{left:16px;top:16px} @keyframes gpTw{0%,100%{opacity:0;transform:scale(.6)}50%{opacity:1;transform:scale(1)}} @media (prefers-reduced-motion:reduce){.gp-cta,.gp-spark{animation:none}.gp-spark{opacity:.8}} -/* ============ 3D 婴儿房 · 入口(2026-10-01 二版:走廊尽头的门)============ - 配色取婴儿房自己的奶油粉:主色 #E0708A、按钮 #F9B4C1→#F18DA2、底 #FFF9F3、蜜桃 #F9C9A8、薄荷 #A9DCC7、字 #6B5048。 - 场景坐标都是绝对定位,改尺寸时门(.ny-way)、气泡、木牌、日历四样一起看,别互相压住。 */ -.nursery{padding-top:14px;padding-bottom:16px} -.ny{position:relative;display:block;width:100%;overflow:hidden;border:0;border-radius:22px;padding:14px 16px 12px; - text-align:left;font:inherit;color:#6B5048;background:linear-gradient(180deg,#FFF9F3 0%,#FFEEE9 100%); - box-shadow:0 8px 22px rgba(224,112,138,.15);-webkit-tap-highlight-color:transparent} -.ny-head{display:flex;flex-direction:column;align-items:flex-start} -.ny-eyebrow{font-size:10.5px;font-weight:800;color:#E0708A;background:#fff;border-radius:999px;padding:2px 9px;letter-spacing:.3px} -.ny-title{margin-top:6px;font-size:17px;font-weight:900;color:#5A3E37;letter-spacing:.3px} -.ny-scene{position:relative;display:block;height:192px;margin:6px -16px 0} -.ny-scene::after{content:"";position:absolute;left:0;right:0;bottom:0;height:26px;background:linear-gradient(180deg,#F5DCCB,#F9E6DA)} -/* 门洞:拱形,白色门框;里面是房间,外面盖一扇虚掩的门 */ -.ny-way{position:absolute;left:28px;bottom:26px;width:112px;height:158px;border-radius:56px 56px 3px 3px; - box-shadow:0 0 0 6px #fff,0 6px 16px rgba(160,90,90,.18);z-index:1} -.ny-room{position:absolute;inset:0;overflow:hidden;border-radius:inherit;background:#FCE1E4} -.ny-room svg{position:absolute;left:0;bottom:0;width:100%;height:100%;transform-origin:50% 70%;transition:transform .7s var(--ease)} -.ny-room [data-k]{opacity:0;transform-box:fill-box;transform-origin:50% 100%} -.ny-room [data-k].on{opacity:1} -.ny-room [data-k].new{animation:nyPop 2.6s ease-in-out infinite} -@keyframes nyPop{0%,70%,100%{transform:translateY(0) scale(1)}78%{transform:translateY(-4px) scale(1.06)}86%{transform:translateY(0) scale(.98)}} -.ny-room [data-k="mobile"].on{transform-origin:50% 0;animation:nySwing 4s ease-in-out infinite} -@keyframes nySwing{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}} -.ny-room .r-moon{opacity:0} -.ny-door{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,#FFF6EF,#FBE6DA); - transform-origin:0 50%;transform:perspective(380px) rotateY(62deg);transition:transform .7s var(--ease); - box-shadow:inset 0 0 0 2px #F3D3C2,6px 0 12px rgba(120,60,60,.18)} -.ny-door::before,.ny-door::after{content:"";position:absolute;left:14px;right:14px;border:2px solid #F3D3C2} -.ny-door::before{top:16px;height:58px;border-radius:40px 40px 6px 6px} -.ny-door::after{bottom:14px;height:52px;border-radius:6px} -.ny-knob{position:absolute;right:11px;top:56%;width:9px;height:9px;border-radius:50%;background:#E3AC72;box-shadow:inset -2px -2px 0 rgba(0,0,0,.08)} -.ny-heart{position:absolute;left:50%;top:38px;width:12px;height:12px;margin-left:-6px;background:#F18DA2; - clip-path:path("M6 11L1.2 6.2A3 3 0 0 1 6 2.4 3 3 0 0 1 10.8 6.2Z")} -/* 门缝里漏出来的暖光,铺在走廊地上 */ -.ny-glow{position:absolute;left:46px;bottom:0;width:150px;height:28px;z-index:0;opacity:.75;transition:opacity .5s; - background:linear-gradient(180deg,rgba(255,214,150,.75),rgba(255,214,150,0));clip-path:polygon(0 0,62% 0,100% 100%,6% 100%)} -.ny-glow{z-index:1} -/* 宝宝从门缝里说话 */ -.ny-bubble{position:absolute;left:116px;top:52px;z-index:3;box-sizing:border-box;max-width:104px;padding:6px 10px;border-radius:12px 12px 12px 3px; - background:#fff;color:#6B5048;font-size:11.5px;font-weight:700;line-height:1.45;box-shadow:0 4px 12px rgba(160,90,90,.18); - transition:opacity .35s,transform .35s} -.ny-bubble.out{opacity:0;transform:translateY(4px)} -/* 木牌 */ -.ny-sign{position:absolute;right:18px;top:16px;z-index:2;transform-origin:50% -14px;animation:nySwing 5s ease-in-out infinite} -.ny-sign::before{content:"";position:absolute;left:22%;right:22%;top:-13px;height:13px;border:1.5px solid #C99A7A;border-bottom:0;border-radius:50% 50% 0 0} -.ny-sign::after{content:"";position:absolute;left:50%;top:-17px;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:#B9876A} -.ny-sign b{display:block;padding:6px 12px;border-radius:8px;background:linear-gradient(180deg,#EBC09A,#DCA683);color:#fff; - font-size:13px;font-weight:900;letter-spacing:.5px;white-space:nowrap;text-shadow:0 1px 0 rgba(150,90,60,.35); - box-shadow:inset 0 0 0 2px rgba(255,255,255,.35),0 3px 6px rgba(150,90,60,.2)} -/* 撕页日历 = 入住倒计时 */ -.ny-cal{position:absolute;right:22px;bottom:34px;z-index:2;width:80px;border-radius:9px;background:#fff;overflow:hidden; - display:flex;flex-direction:column;align-items:center;box-shadow:0 5px 12px rgba(160,90,90,.18);transform:rotate(2deg)} -.ny-cal-top{align-self:stretch;text-align:center;padding:4px 0 3px;font-size:10px;font-weight:800;color:#fff; - background:linear-gradient(135deg,#F9B4C1,#F18DA2);position:relative} -.ny-cal-num{display:flex;align-items:baseline;gap:1px;margin-top:2px;color:#E0708A} -.ny-cal-num b{font-size:28px;font-weight:900;line-height:1.1;font-variant-numeric:tabular-nums} -.ny-cal-num i{font-style:normal;font-size:11px;font-weight:800} -.ny-cal-foot{width:100%;text-align:center;padding:2px 0 5px;font-size:10px;color:#A0857C;border-top:1px dashed #F3D3C2} -/* 进度:9 颗点 */ -.ny-track{display:block;margin-top:10px} -.ny-dots{position:relative;display:flex;justify-content:space-between;align-items:center} -.ny-dots::before{content:"";position:absolute;left:4px;right:4px;top:50%;height:2px;margin-top:-1px;background:#F6DCD3} -.ny-dots::after{content:"";position:absolute;left:4px;top:50%;height:2px;margin-top:-1px;width:var(--p,0%);background:#F18DA2;border-radius:2px} -.ny-dots i{position:relative;z-index:1;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 2px #F6DCD3} -.ny-dots i.on{background:#F18DA2;box-shadow:none} -.ny-dots i.cur{width:12px;height:12px;box-shadow:0 0 0 3px rgba(241,141,162,.28);animation:nyPulse 1.8s ease-in-out infinite} -@keyframes nyPulse{50%{box-shadow:0 0 0 6px rgba(241,141,162,0)}} -.ny-foot{display:flex;align-items:center;gap:8px;margin-top:9px} -.ny-prog{flex:1;min-width:0;font-size:12px;color:#8A6C63;line-height:1.4} -.ny-prog b{color:#E0708A;font-weight:900} -.ny-cta{flex:0 0 auto;display:inline-flex;align-items:center;gap:3px;border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:800; - color:#fff;background:linear-gradient(135deg,#F9B4C1,#F18DA2);box-shadow:0 4px 10px rgba(224,112,138,.3)} -/* 点击:门推开、房间凑近 */ -.ny.is-opening .ny-door{transform:perspective(380px) rotateY(88deg)} -.ny.is-opening .ny-room svg{transform:scale(1.22)} -.ny.is-opening .ny-glow{opacity:1} -.ny.is-opening .ny-bubble{opacity:0} -/* 已出生:门敞开 */ -.nursery.is-born .ny-door{transform:perspective(380px) rotateY(80deg)} -/* 夜间(北京时间 19:00–6:00) */ -.nursery.is-night .ny{color:#F4E3E7;background:linear-gradient(180deg,#3A2F4F 0%,#4B3756 100%);box-shadow:0 8px 22px rgba(58,47,79,.3)} -.nursery.is-night .ny-scene::after{background:linear-gradient(180deg,#2E2540,#3A2E4A)} -.nursery.is-night .ny-title{color:#FFF3F5} -.nursery.is-night .ny-eyebrow{background:rgba(255,255,255,.14);color:#FFC6D2} -.nursery.is-night .ny-prog{color:#D9C5D0} -.nursery.is-night .ny-prog b{color:#FFB3C3} -.nursery.is-night .ny-way{box-shadow:0 0 0 6px #6A5478,0 0 26px rgba(255,200,120,.45)} -.nursery.is-night .ny-door{background:linear-gradient(90deg,#6A5478,#5A4868);box-shadow:inset 0 0 0 2px #7D6690} -.nursery.is-night .ny-door::before,.nursery.is-night .ny-door::after{border-color:#7D6690} -.nursery.is-night .ny-room .r-wall{fill:#E7C2CF} -.nursery.is-night .ny-room .r-floor{fill:#DDB89E} -.nursery.is-night .ny-room .r-sky{fill:#3E3A66} -.nursery.is-night .ny-room .r-moon{opacity:1} -.nursery.is-night .ny-room .r-glow{opacity:.75} -.nursery.is-night .ny-room svg{filter:sepia(.18) saturate(1.15)} -.nursery.is-night .ny-glow{opacity:1} -.nursery.is-night .ny-dots::before{background:#5E4A70} -.nursery.is-night .ny-dots i{background:#4B3756;box-shadow:inset 0 0 0 2px #6A5478} -.nursery.is-night .ny-dots i.on{background:#F18DA2;box-shadow:none} -@media (prefers-reduced-motion:reduce){.ny-room [data-k],.ny-sign,.ny-dots i.cur{animation:none!important}} +/* ============ 3D 婴儿房 · 页面上的一道空隙(2026-10-01 三版)============ + 这一块**故意没有底色、没有圆角卡片**:它是页面上开的缝,里面是铺在整页背后的房间。 + .nyp-layer 的 height / transform 由 JS 按 .screen 可视区每帧写入(见 app.js nurseryInit),这里别再给它写 top/transform。 + ::after = 上下模块压在房间上的阴影,要盖在图层之上、按钮之下。 */ +.ny-peek{position:relative;margin:16px -26px 0;height:300px;overflow:hidden;background:#FFECD8} +.nyp-layer{position:absolute;left:0;top:0;width:100%;height:812px;will-change:transform; + display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 48%,#FFFDFB 0%,#FFF3E8 40%,#FFECD8 72%)} +.nyp-layer img{display:block;width:100%;max-width:440px;height:auto; + -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 14%,#000 86%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 14%,#000 86%,transparent 100%)} +.ny-peek::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1; + box-shadow:inset 0 16px 18px -14px rgba(120,70,50,.28),inset 0 -16px 18px -14px rgba(120,70,50,.28)} +.nyp-chip{position:absolute;left:26px;top:16px;z-index:2;font-size:11px;font-weight:800;color:#E0708A;letter-spacing:.3px; + background:rgba(255,255,255,.86);border-radius:999px;padding:3px 10px;box-shadow:0 2px 8px rgba(224,112,138,.15)} +.nyp-bar{position:absolute;left:18px;right:18px;bottom:16px;z-index:2;display:flex;align-items:center;gap:10px; + padding:10px 10px 10px 14px;border-radius:18px;background:rgba(255,255,255,.82); + -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 6px 18px rgba(160,90,90,.16)} +.nyp-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px} +.nyp-txt b{font-size:15px;font-weight:900;color:#5A3E37;letter-spacing:.3px} +.nyp-txt span{font-size:11.5px;color:#8A6C63;line-height:1.4} +.nyp-txt span em{font-style:normal;color:#E0708A;font-weight:900} +.nyp-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:3px;border:0;border-radius:999px;padding:8px 14px;font:inherit; + font-size:13px;font-weight:800;color:#fff;background:linear-gradient(135deg,#F9B4C1,#F18DA2);box-shadow:0 4px 10px rgba(224,112,138,.32); + animation:nypNudge 2.8s ease-in-out infinite} +.nyp-btn:active{transform:scale(.96)} +@keyframes nypNudge{0%,80%,100%{transform:translateX(0)}86%{transform:translateX(3px)}92%{transform:translateX(0)}} +/* 夜间:房间整体压暗,中间留一团暖灯 */ +.ny-peek.is-night .nyp-layer::after{content:"";position:absolute;inset:0; + background:radial-gradient(ellipse at 50% 46%,rgba(255,200,120,.18) 0%,rgba(46,32,70,.32) 45%,rgba(30,22,52,.62) 100%)} +.ny-peek.is-night .nyp-bar{background:rgba(58,47,79,.78)} +.ny-peek.is-night .nyp-txt b{color:#FFF3F5} +.ny-peek.is-night .nyp-txt span{color:#D9C5D0} +.ny-peek.is-night .nyp-txt span em{color:#FFB3C3} +@media (prefers-reduced-motion:reduce){.nyp-btn{animation:none}} /* ============ 孕期小知识(2026-09-30)============ 外壳是公共白色通栏。里面三层: