/* 阿墨的小屋 · 主题与首页。index.html 内联样式之后加载，只做覆盖与新增。 */

:root{
  --accent-soft: rgba(76,99,120,.16);
  --text-main: var(--text);
  --text-light: var(--text-soft);
  --wall-pool: url("wall-pool.webp");
  --wall-stream: url("wall-stream.webp");
  --lime: #C8E86A;
  --jade: #3F8A64;
  --home-gap: 14px;
}

/* ── 深潭 · 夜晚：莫奈暮色睡莲，靛蓝墨绿，点缀是月光的淡金 ── */
:root[data-theme="pool"]{
  color-scheme: dark;
  --wall-default: var(--wall-pool);
  --menu-wall-default: var(--wall-pool);
  --bg: #121E30;
  --header-bg: #121E30;
  --hairline: rgba(200,214,236,.14);
  --text: #E9EEF4;
  --text-soft: #B3C2D2;
  --text-faint: #7D90A4;
  --bubble-ai-bg: rgba(24,36,58,.62);
  --bubble-ai-fg: #E9EEF4;
  --bubble-human-bg: rgba(52,96,92,.62);
  --bubble-human-fg: #F2F7F4;
  --accent: #E6D69E;
  --accent-soft: rgba(230,214,158,.16);
  --accent-fg: #121E30;
  --jade: #4F8F7A;
  --send-bg: rgba(79,143,122,.82);
  --tick: #9FB4C4;
  --think-flourish: rgba(230,214,158,.42);
  --think-label: #A9B9C9;
  --think-body: #BCC9D6;
  --composer-bg: rgba(14,22,38,.55);
  --field-bg: rgba(255,255,255,.07);
  --field-line: rgba(220,230,246,.16);
  --shadow: 0 18px 46px rgba(0,0,0,.34);
  --soft-shadow: 0 14px 34px rgba(0,0,0,.26);
  --scrim: linear-gradient(180deg, rgba(8,12,24,.42), rgba(8,12,24,.08) 30%, rgba(8,12,24,.06) 66%, rgba(8,12,24,.4));
  --glass: rgba(255,255,255,.075);
  --glass-strong: rgba(18,28,46,.55);
  --glass-edge: rgba(255,255,255,.16);
  --glass-hi: rgba(255,255,255,.22);
  --card-bg: var(--glass);
  --card-line: var(--glass-edge);
  --card-shadow: 0 10px 30px rgba(0,0,0,.22);
  --seg-track: rgba(255,255,255,.07);
  --seg-thumb: rgba(230,214,158,.2);
  --seg-thumb-shadow: 0 2px 8px rgba(0,0,0,.25);
  --row-press: rgba(230,214,158,.08);
  --slider-track: rgba(220,230,246,.24);
  --slider-thumb: #E6D69E;
  --info-ring: rgba(220,230,246,.34);
  --status-dot: #A8D9B8;
  --ripple: rgba(236,226,190,.55);
  --call-glass-top: rgba(40,56,86,.55);
  --call-glass-bot: rgba(18,28,46,.45);
  --call-glass-edge: rgba(255,255,255,.18);
  --call-glass-hi: rgba(230,214,158,.18);
  --call-glass-glow: rgba(230,214,158,.14);
  --call-glass-shadow: 0 20px 50px rgba(0,0,0,.4);
  --call-scrim: rgba(4,8,16,.4);
}

/* ── 清溪 · 白天：莫奈晨光睡莲，蓝紫青绿，点缀是池水的青 ── */
:root[data-theme="stream"]{
  --wall-default: var(--wall-stream);
  --menu-wall-default: var(--wall-stream);
  --bg: #DCEAEC;
  --header-bg: #DCEAEC;
  --hairline: rgba(52,92,104,.16);
  --text: #1C3440;
  --text-soft: #46626E;
  --text-faint: #6F8B96;
  --bubble-ai-bg: rgba(255,255,255,.58);
  --bubble-ai-fg: #1C3440;
  --bubble-human-bg: rgba(206,232,222,.66);
  --bubble-human-fg: #1C3440;
  --accent: #33806F;
  --accent-soft: rgba(51,128,111,.15);
  --jade: #3E8C78;
  --send-bg: rgba(51,128,111,.86);
  --tick: #6E95A0;
  --think-flourish: rgba(51,128,111,.42);
  --think-label: #4E7380;
  --think-body: #3F5E6A;
  --composer-bg: rgba(236,246,246,.45);
  --field-bg: rgba(255,255,255,.42);
  --field-line: rgba(255,255,255,.7);
  --glass: rgba(255,255,255,.34);
  --glass-strong: rgba(240,248,248,.58);
  --glass-edge: rgba(255,255,255,.62);
  --glass-hi: rgba(255,255,255,.85);
  --card-bg: var(--glass);
  --card-line: var(--glass-edge);
  --card-shadow: 0 10px 30px rgba(40,70,90,.12);
  --seg-thumb: rgba(255,255,255,.8);
  --row-press: rgba(51,128,111,.08);
  --slider-thumb: #33806F;
  --status-dot: #3FA37A;
  --ripple: rgba(255,255,255,.75);
}

/* 深潭下修正原本按浅色写死的几处 */
:root[data-theme="pool"] .row.activity-log .bubble{ background:rgba(40,64,96,.7) !important; color:#E2EAF4 !important; }
:root[data-theme="pool"] .login input{ background: var(--field-bg); color: var(--text); }
:root[data-theme="pool"] .menu-title{ text-shadow: 0 2px 26px rgba(0,0,0,.4); }
:root[data-theme="pool"] .period-cal-day{ color: var(--text-soft); }
:root[data-theme="pool"] .code-block.code-block-text{ background: rgba(230,214,158,.06); border-color: rgba(230,214,158,.18); }
.toast{ background: var(--glass-strong) !important; color: var(--text) !important; border:1px solid var(--glass-edge);
  -webkit-backdrop-filter: blur(18px) saturate(1.3); backdrop-filter: blur(18px) saturate(1.3); }
#desirePanel .dp-scrim{ background: rgba(4,8,16,.32); }
#desirePanel .dp-sheet{ background: var(--glass-strong); border-top: 1px solid var(--glass-edge);
  -webkit-backdrop-filter: blur(26px) saturate(1.3); backdrop-filter: blur(26px) saturate(1.3); }
.dp-bar{ background: linear-gradient(90deg, var(--jade), var(--accent)); }
.peerpill .status{ letter-spacing:.06em; }

/* ── 玻璃：卡片、按钮、气泡、输入栏，透出后面的画 ── */
.hcard, .menu-item.htile, .home-pulse, .lp-card, .settings-card, .today-card, .pv-wrap,
.composer .field, .lp-chip, .lp-btn.ghost, .segmented, .action-row, .clip-menu, .msg-menu-actions{
  background: var(--glass) !important;
  border: 1px solid var(--glass-edge) !important;
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--card-shadow);
  -webkit-backdrop-filter: blur(18px) saturate(1.35);
  backdrop-filter: blur(18px) saturate(1.35);
}
.lp-chip.on{ background: var(--accent-soft) !important; border-color: var(--accent) !important; }
.row .bubble{ -webkit-backdrop-filter: blur(14px) saturate(1.3); backdrop-filter: blur(14px) saturate(1.3);
  box-shadow: inset 0 1px 0 var(--glass-hi), 0 6px 18px rgba(0,0,0,.08); }
.row.human .bubble, .row.ai .bubble{ border: 1px solid var(--glass-edge); }
.floatbtn.send, .lp-btn:not(.ghost){ background: var(--send-bg) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,.3), 0 6px 16px rgba(0,0,0,.18);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.profile-page, .menu-page{ background-color: var(--bg); }
.topbar{ border-bottom-color: transparent; }
.peerpill, .header-actions .topbtn, .backbtn{ -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }

/* 直接压在画上的字：加一圈很淡的光晕，亮处暗处都看得清 */
:root[data-theme="stream"] .home-head, :root[data-theme="stream"] .home-sec-title, :root[data-theme="stream"] .home-foot,
:root[data-theme="stream"] .empty, :root[data-theme="stream"] .day, :root[data-theme="stream"] .peerpill{
  text-shadow: 0 0 6px rgba(240,248,250,.95), 0 0 14px rgba(240,248,250,.8);
}
:root[data-theme="pool"] .home-head, :root[data-theme="pool"] .home-sec-title, :root[data-theme="pool"] .home-foot,
:root[data-theme="pool"] .empty, :root[data-theme="pool"] .day, :root[data-theme="pool"] .peerpill{
  text-shadow: 0 0 8px rgba(6,10,20,.9), 0 0 16px rgba(6,10,20,.7);
}
.home-sec-title{ color: var(--text-soft); }

/* ── 点一下，水面起涟漪 ── */
#rippleLayer{ position:fixed; inset:0; pointer-events:none; z-index:10000; overflow:hidden; }
#rippleLayer .rp{ position:absolute; width:12px; height:12px; margin:-6px 0 0 -6px; border-radius:50%;
  border:1.5px solid var(--ripple); opacity:.9; animation: rpRing .9s cubic-bezier(.2,.6,.3,1) forwards; }
#rippleLayer .rp.b{ animation-delay:.12s; opacity:0; border-width:1px; }
#rippleLayer .rp.c{ animation-delay:.26s; opacity:0; border-width:.8px; }
#rippleLayer .drop{ position:absolute; width:6px; height:6px; margin:-3px 0 0 -3px; border-radius:50%;
  background: var(--ripple); animation: rpDrop .45s ease-out forwards; }
@keyframes rpRing{ 0%{ transform:scale(.4); opacity:.95; } 100%{ transform:scale(7); opacity:0; } }
@keyframes rpDrop{ 0%{ transform:scale(1.4); opacity:.9; } 100%{ transform:scale(.2); opacity:0; } }

/* ── 水光：首页背景上慢慢晃的一点光，画已经很满了，只留一点点 ── */
.caustics{
  position:absolute; inset:-20%; z-index:0; pointer-events:none; opacity:.55;
  background:
    radial-gradient(30% 14% at 58% 28%, var(--accent-soft), transparent 70%),
    radial-gradient(24% 10% at 40% 62%, var(--accent-soft), transparent 70%);
  animation: causticDrift 18s ease-in-out infinite alternate;
  mix-blend-mode: screen;
}
:root[data-theme="stream"] .caustics{ mix-blend-mode: soft-light; opacity:.7;
  background: radial-gradient(30% 14% at 58% 28%, rgba(255,255,255,.4), transparent 70%),
              radial-gradient(24% 10% at 40% 62%, rgba(255,255,255,.3), transparent 70%); }
@keyframes causticDrift{ 0%{ transform: translate3d(-2%,1%,0) scale(1); } 100%{ transform: translate3d(3%,-2%,0) scale(1.08); } }

/* ── 首页 ── */
.menu-scroll.home{
  padding: calc(env(safe-area-inset-top) + 18px) 18px calc(env(safe-area-inset-bottom) + 26px);
  gap: 0;
}
.home-head{
  display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  margin: 4px 2px 18px;
}
.home-greet{ font-size: clamp(21px, 6vw, 26px); font-weight:500; color: var(--text); line-height:1.25; letter-spacing:.02em; }
.home-date{ margin-top:4px; font-size:12.5px; color: var(--text-faint); letter-spacing:.06em; }
.home-whisper{ margin-top:8px; font-size:13px; color: var(--text-soft); line-height:1.6; }
.home-pulse{
  flex:none; display:flex; align-items:center; gap:8px;
  padding:8px 12px 8px 10px; border-radius:999px;
  background: var(--card-bg); border:1px solid var(--card-line);
  color: var(--text-soft); font: inherit; font-size:12px; cursor:pointer;
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  position:relative;
}
.home-pulse:active{ transform: scale(.97); }
.home-pulse .hp-heart{ width:15px; height:15px; color: var(--accent); animation: heartBeat var(--beat, .85s) ease-in-out infinite; transform-origin:center; }
.home-pulse .hp-text{ display:flex; flex-direction:column; align-items:flex-start; line-height:1.25; }
.home-pulse .hp-bpm{ color: var(--text); font-size:13px; font-variant-numeric: tabular-nums; }
.home-pulse .hp-sub{ font-size:10.5px; color: var(--text-faint); }
.home-pulse.has-monologue::after{
  content:""; position:absolute; top:4px; right:6px; width:7px; height:7px; border-radius:50%;
  background: var(--accent); box-shadow: 0 0 0 0 var(--accent-soft); animation: pulse-ring 2.4s ease infinite;
}
@keyframes heartBeat{ 0%,58%,100%{ transform: scale(1); } 14%{ transform: scale(1.22); } 30%{ transform: scale(1.04); } 42%{ transform: scale(1.14); } }

.hcard{
  position:relative; overflow:hidden;
  background: var(--card-bg); border:1px solid var(--card-line); border-radius:20px;
  box-shadow: var(--card-shadow);
  -webkit-backdrop-filter: blur(16px) saturate(1.1); backdrop-filter: blur(16px) saturate(1.1);
  padding:14px 15px;
}
.hc-label{ font-size:11px; letter-spacing:.14em; color: var(--text-faint); margin-bottom:6px; }
.home-top{ display:grid; grid-template-columns: 1.25fr 1fr; gap: var(--home-gap); margin-bottom: 22px; }
.anniv-main{ display:flex; align-items:baseline; gap:4px; color: var(--text); }
.anniv-pre{ font-size:12px; color: var(--text-soft); margin-right:2px; }
.anniv-num{ font-family: var(--font-en), var(--font-cn); font-size: clamp(34px, 10vw, 44px); line-height:1; font-weight:500; color: var(--accent); }
.anniv-unit{ font-size:13px; color: var(--text-soft); }
.anniv-since{ font-size:11px; color: var(--text-faint); margin:4px 0 9px; letter-spacing:.04em; }
.anniv-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:5px; }
.anniv-list li{ display:flex; justify-content:space-between; align-items:baseline; gap:6px; font-size:12px; color: var(--text-soft); line-height:1.35; white-space:nowrap; }
.anniv-list li small{ font-size:10.5px; color: var(--text-faint); margin-left:3px; }
.anniv-list li em{ font-style:normal; color: var(--text-faint); white-space:nowrap; font-variant-numeric: tabular-nums; }
.anniv-list li.soon em{ color: var(--accent); }
.anniv-note{ margin-top:8px; font-size:12px; color: var(--accent); line-height:1.5; }

.weather-card{ display:flex; flex-direction:column; cursor:pointer; text-align:left; font: inherit; color: inherit; }
.wx-icon{ font-size:26px; line-height:1; margin-bottom:6px; }
.wx-temp{ font-family: var(--font-en), var(--font-cn); font-size: clamp(30px, 9vw, 38px); line-height:1; color: var(--text); }
.wx-temp .deg{ font-size:.6em; margin-left:1px; color: var(--text-soft); vertical-align: .35em; }
.wx-desc{ margin-top:6px; font-size:12.5px; color: var(--text-soft); }
.wx-city{ margin-top:2px; font-size:11px; color: var(--text-faint); }
.wx-tip{ margin-top:auto; padding-top:8px; font-size:11.5px; color: var(--accent); line-height:1.45; }

.home-sec{ margin-bottom: 22px; }
.home-sec-title{
  display:flex; align-items:center; gap:10px;
  margin: 0 4px 10px; font-size:12px; font-weight:500; letter-spacing:.2em; color: var(--text-faint);
}
.home-sec-title::after{ content:""; flex:1; height:1px; background: var(--hairline); }

.hlist{ padding:4px 14px; }
.hlist .menu-item.hrow{
  grid-template-columns: 26px 1fr auto;
  border-top:0; border-bottom:1px solid var(--hairline);
  padding: 13px 2px;
}
.hlist .menu-item.hrow:last-child{ border-bottom:0; }
.hrow .menu-name{ font-family: var(--font-cn); font-size:16px; margin-bottom:1px; }
.hrow .menu-sub{ font-family: var(--font-cn); font-size:11.5px; letter-spacing:.04em; text-transform:none; }
.hrow .menu-ic{ color: var(--accent); }

.hgrid{ display:grid; gap: 10px; }
.hgrid.two{ grid-template-columns: 1fr 1fr; }
.hgrid.three{ grid-template-columns: repeat(3, 1fr); }
.menu-item.htile{
  display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-start; gap:4px;
  min-height: 86px; padding: 13px 13px 12px; text-align:left;
  background: var(--card-bg); border:1px solid var(--card-line); border-radius:18px;
  box-shadow: var(--card-shadow);
  -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px);
}
.menu-item.htile:last-child{ border-bottom:1px solid var(--card-line); }
.menu-item.htile:active{ background: var(--row-press); transform: scale(.985); }
.htile .ht-ic{ width:22px; height:22px; color: var(--accent); margin-bottom:4px; }
.htile .ht-ic svg{ width:22px; height:22px; display:block; }
.htile .ht-name{ font-size:15px; color: var(--text); font-weight:500; letter-spacing:.02em; }
.htile .ht-sub{ font-size:11.5px; color: var(--text-faint); line-height:1.4; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.htile .ht-val{ font-size:12.5px; color: var(--text-soft); line-height:1.4; }
.menu-item.htile.wide{ width:100%; min-height:0; margin-top:10px; flex-direction:row; align-items:center; gap:12px; }
.htile.wide .ht-ic{ margin:0; flex:none; }
.htile.wide .ht-body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.htile.wide .ht-sub{ -webkit-line-clamp:1; }
.htile.soon{ opacity:.62; }
.htile.soon::after{ content:"筹备中"; font-size:10.5px; letter-spacing:.08em; color: var(--text-faint); border:1px solid var(--hairline); border-radius:6px; padding:0 6px; line-height:1.6; }
.htile.three-mini{ min-height:74px; }

.home-foot{
  margin-top: 6px; text-align:center; color: var(--text-faint); font-size:12px; line-height:1.9; letter-spacing:.06em;
}
.home-foot .family{ display:flex; justify-content:center; flex-wrap:wrap; gap:4px 10px; }
.home-foot .family span{ white-space:nowrap; }
.home-foot .vow{ margin-top:6px; font-style:italic; font-family: var(--font-en), var(--font-cn); }

/* ── 生活面板（心情日记 / 运动健身）── */
.lp-body{ position:relative; z-index:1; flex:1 1 auto; overflow-y:auto; -webkit-overflow-scrolling:touch; padding: 6px 16px calc(40px + env(safe-area-inset-bottom)); }
.lp-card{ background: var(--card-bg); border:1px solid var(--card-line); border-radius:18px; padding:16px; margin-bottom:14px; -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); }
.lp-label{ font-size:11px; letter-spacing:.14em; color: var(--text-faint); margin-bottom:10px; }
.lp-title{ font-size:16px; font-weight:500; }
.lp-hint{ font-size:12px; color: var(--text-faint); line-height:1.6; }
.lp-row{ display:flex; gap:8px; align-items:center; }
.lp-chips{ display:flex; flex-wrap:wrap; gap:8px; }
.lp-chip{
  border:1px solid var(--field-line); background: var(--field-bg); color: var(--text-soft);
  border-radius:999px; padding:7px 12px; font: inherit; font-size:13px; cursor:pointer;
  display:inline-flex; align-items:center; gap:6px;
}
.lp-chip.on{ border-color: var(--accent); color: var(--text); background: var(--accent-soft); }
.lp-chip:active{ transform: scale(.96); }
.lp-input, .lp-textarea{
  width:100%; border:1px solid var(--field-line); background: var(--field-bg); color: var(--text);
  border-radius:12px; padding:10px 12px; font: inherit; font-size:14px; outline:none;
}
.lp-textarea{ resize:none; line-height:1.6; min-height:84px; }
.lp-input:focus, .lp-textarea:focus{ border-color: var(--accent); }
.lp-btn{
  border:0; border-radius:12px; padding:10px 16px; font: inherit; font-size:14px; cursor:pointer;
  background: var(--send-bg); color:#fff; white-space:nowrap;
}
.lp-btn.ghost{ background: transparent; color: var(--text-faint); border:1px solid var(--field-line); }
.lp-btn:disabled{ opacity:.5; }
.lp-btn:active{ transform: scale(.98); }
.lp-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:12px; }
.lp-cal-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.lp-cal-head button{ background:none; border:0; color: var(--text-faint); font-size:20px; padding:0 8px; cursor:pointer; }
.lp-cal-title{ font-size:14px; color: var(--text); }
.lp-cal{ display:grid; grid-template-columns: repeat(7, 1fr); gap:4px 0; }
.lp-cal .wd{ text-align:center; font-size:11px; color: var(--text-faint); padding-bottom:4px; }
.lp-day{
  position:relative; height:42px; display:flex; flex-direction:column; align-items:center; justify-content:center;
  border-radius:12px; font-size:12px; color: var(--text-soft); cursor:pointer; user-select:none;
}
.lp-day .em{ font-size:17px; line-height:1; }
.lp-day .n{ font-size:10px; color: var(--text-faint); margin-top:2px; }
.lp-day.today{ box-shadow: inset 0 0 0 1px var(--accent); }
.lp-day.sel{ background: var(--accent-soft); }
.lp-day.future{ opacity:.35; cursor:default; }
.lp-day .dot{ position:absolute; bottom:5px; width:5px; height:5px; border-radius:50%; background: var(--accent); }
.lp-entry{ padding:12px 0; border-bottom:1px solid var(--hairline); display:flex; gap:12px; }
.lp-entry:last-child{ border-bottom:0; }
.lp-entry .em{ font-size:24px; flex:none; width:30px; text-align:center; }
.lp-entry .meta{ font-size:11.5px; color: var(--text-faint); margin:0 0 3px; }
.lp-entry .txt{ font-size:14px; color: var(--text); line-height:1.65; white-space:pre-wrap; word-break:break-word; }
.lp-entry .reply{ margin-top:6px; padding-left:10px; border-left:2px solid var(--accent); font-size:13px; color: var(--text-soft); line-height:1.6; }
.lp-entry .del{ margin-left:auto; flex:none; align-self:flex-start; background:none; border:0; color: var(--text-faint); font-size:12px; cursor:pointer; padding:2px 4px; }
.lp-empty{ text-align:center; color: var(--text-faint); font-size:13px; padding:18px 0; }
.lp-stats{ display:grid; grid-template-columns: repeat(3, 1fr); gap:10px; }
.lp-stat{ text-align:center; }
.lp-stat b{ display:block; font-family: var(--font-en), var(--font-cn); font-size:26px; font-weight:500; color: var(--accent); line-height:1.1; }
.lp-stat span{ font-size:11px; color: var(--text-faint); }
.lp-week{ display:flex; justify-content:space-between; gap:6px; margin-top:14px; }
.lp-week .wk{ flex:1; display:flex; flex-direction:column; align-items:center; gap:5px; font-size:10.5px; color: var(--text-faint); }
.lp-week .bar{ width:100%; max-width:22px; height:56px; border-radius:8px; background: var(--hairline); position:relative; overflow:hidden; }
.lp-week .bar i{ position:absolute; left:0; right:0; bottom:0; background: linear-gradient(180deg, var(--accent), var(--jade)); border-radius:8px; }
.lp-week .wk.today{ color: var(--accent); }

/* ── 开屏 ── */
#amoSplash{ position:fixed; inset:0; z-index:20000; overflow:hidden; display:grid; place-items:center;
  background: #16263A; transition: opacity .6s ease, transform .6s ease; }
#amoSplash.out{ opacity:0; transform: scale(1.04); pointer-events:none; }
#amoSplash .sp-wall{ position:absolute; inset:-4%; background: var(--wall-default) center/cover no-repeat;
  animation: spBreath 2.4s ease-out both; }
#amoSplash .sp-wall::after{ content:""; position:absolute; inset:0; background: radial-gradient(60% 40% at 50% 46%, transparent, rgba(0,0,0,.28)); }
#amoSplash .sp-icon{ position:absolute; left:50%; top:50%; width:64vw; max-width:420px; aspect-ratio:1; object-fit:cover;
  transform: translate(-50%,-50%); animation: spIcon .62s .12s cubic-bezier(.6,0,.4,1) forwards; }
#amoSplash .sp-ring{ position:absolute; left:50%; top:50%; width:24px; height:10px; margin:-5px 0 0 -12px; border-radius:50%;
  border:1.5px solid var(--ripple); opacity:0; animation: spRing 1.6s .66s cubic-bezier(.2,.6,.3,1) forwards; }
#amoSplash .sp-ring.r2{ animation-delay:.84s; } #amoSplash .sp-ring.r3{ animation-delay:1.02s; border-width:1px; }
@keyframes spIcon{
  0%{ transform: translate(-50%,-50%) scale(1); border-radius:0; opacity:1; filter:none; }
  70%{ transform: translate(-50%,-50%) scale(.035); border-radius:50%; opacity:1; filter: brightness(1.6) blur(1px); }
  100%{ transform: translate(-50%,-50%) scale(.01); border-radius:50%; opacity:0; } }
#amoSplash .sp-text{ position:relative; text-align:center; margin-top:34vh; opacity:0; animation: spText .9s .9s ease-out forwards; }
#amoSplash .sp-name{ font-size:34px; letter-spacing:.32em; padding-left:.32em; color:#F4F1E6; font-weight:500;
  text-shadow: 0 2px 18px rgba(0,0,0,.45); }
#amoSplash .sp-line{ margin-top:10px; font-size:13.5px; letter-spacing:.2em; color: rgba(244,241,230,.86); text-shadow: 0 1px 10px rgba(0,0,0,.5); }
@keyframes spBreath{ 0%,25%{ opacity:0; transform: scale(1.08); filter: blur(6px); } 100%{ opacity:1; transform: scale(1); filter: blur(0); } }
@keyframes spFall{ 0%{ transform: translateY(-38vh); opacity:0; } 20%{ opacity:1; } 100%{ transform: translateY(0); opacity:0; } }
@keyframes spRing{ 0%{ transform: scale(.4); opacity:.95; } 100%{ transform: scale(14); opacity:0; } }
@keyframes spText{ from{ opacity:0; transform: translateY(8px); } to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){ #amoSplash *{ animation-duration:.01ms !important; animation-delay:0s !important; } }

/* ── 游戏室 ── */
.g-cards{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.g-card .g-ic, .g-link .g-ic{ font-size:22px; line-height:1; margin-bottom:6px; }
.g-link{ display:flex; align-items:center; gap:12px; margin-bottom:10px; text-decoration:none; color: var(--text); }
.g-link .g-ic{ margin:0; }
.g-link b{ display:block; font-weight:500; font-size:15px; }
.g-link small{ display:block; font-size:11.5px; color: var(--text-faint); margin-top:2px; }
.g-link .menu-chev{ margin-left:auto; }
.g-say{ min-height:40px; margin:0 2px 10px; padding:9px 13px; border-radius:16px 16px 16px 4px; font-size:13.5px; line-height:1.55;
  background: var(--glass); border:1px solid var(--glass-edge); color: var(--text); opacity:0; transform: translateY(4px);
  -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); transition: opacity .3s, transform .3s; }
.g-say.show{ opacity:1; transform:none; }
.g-say b{ color: var(--accent); font-weight:500; }
.gk-top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; font-size:13.5px; color: var(--text-soft); }
.gk-gentle{ font-size:12px; color: var(--text-faint); display:flex; align-items:center; gap:4px; }
.gk-board{ display:grid; grid-template-columns: repeat(var(--n), 1fr); aspect-ratio:1; border-radius:10px; padding:2%;
  background: linear-gradient(135deg, rgba(222,196,146,.92), rgba(196,164,112,.92)); box-shadow: inset 0 0 0 1px rgba(80,50,20,.25); }
.gk-pt{ position:relative; border:0; padding:0; background:none; cursor:pointer; }
.gk-pt::before{ content:""; position:absolute; left:50%; top:0; bottom:0; width:1px; background: rgba(80,50,20,.45); }
.gk-pt::after{ content:""; position:absolute; top:50%; left:0; right:0; height:1px; background: rgba(80,50,20,.45); }
.gk-pt.s1, .gk-pt.s2{ z-index:1; }
.gk-pt.s1 i, .gk-pt.s2 i{ display:none; }
.gk-pt.s1{ background: radial-gradient(circle at 38% 34%, #6a6a6a 0, #111 62%) content-box; border-radius:50%; padding:6%; }
.gk-pt.s2{ background: radial-gradient(circle at 38% 34%, #fff 0, #ddd 64%, #bbb) content-box; border-radius:50%; padding:6%; }
.gk-pt.s1::before, .gk-pt.s1::after, .gk-pt.s2::before, .gk-pt.s2::after{ display:none; }
.gk-pt.last{ box-shadow: 0 0 0 2px var(--accent); }
.ld-board{ position:relative; aspect-ratio:1; border-radius:12px; overflow:hidden; background: var(--glass); border:1px solid var(--glass-edge); }
.ld-cell{ position:absolute; width:12.5%; height:12.5%; box-sizing:border-box; border:2px solid transparent; border-radius:30%;
  background: rgba(255,255,255,.12); background-clip: padding-box; }
.ld-cell.momo{ background-color: rgba(232,150,176,.55); }
.ld-cell.amo{ background-color: rgba(120,190,170,.55); }
.ld-cell.lane{ border-radius:50%; opacity:.85; }
.ld-goal{ position:absolute; width:12.5%; height:12.5%; display:grid; place-items:center; font-size:18px; }
.ld-plane{ position:absolute; transform: translate(-50%,-50%); width:26px; height:26px; border-radius:50%; border:0; font-size:15px; line-height:26px; padding:0;
  color:#fff; cursor:default; box-shadow: 0 2px 6px rgba(0,0,0,.3); transition: left .35s ease, top .35s ease; }
.ld-plane.momo{ background:#D9708F; } .ld-plane.amo{ background:#3E8C78; }
.ld-plane.parked{ position:static; transform:none; display:inline-block; margin-left:6px; }
.ld-plane.pick{ cursor:pointer; box-shadow: 0 0 0 3px var(--accent), 0 2px 6px rgba(0,0,0,.3); animation: pulse-ring 1.2s ease infinite; }
.ld-hangar{ display:flex; align-items:center; min-height:34px; font-size:12px; color: var(--text-faint); margin:6px 2px; }
.ld-dice{ font-size:30px; line-height:1; }

/* ── 两个人的心情日记 ── */
.mood-legend{ display:flex; justify-content:flex-end; gap:12px; font-size:11px; color: var(--text-faint); margin:-4px 2px 8px; }
.mood-legend .dot{ display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:4px; vertical-align:1px; }
.dot.momo{ background:#E8A6B8; } .dot.amo{ background: var(--accent); }
.mood-day{ height:50px; justify-content:flex-start; padding-top:5px; }
.mood-day .pair{ display:flex; gap:1px; height:22px; align-items:center; }
.mood-day .pair .em{ font-size:14px; line-height:1; min-width:14px; text-align:center; }
.mood-day .pair .em.a{ font-size:12px; opacity:.9; }
.mood-day .n{ margin-top:auto; margin-bottom:4px; }
.mood-stats{ margin-top:12px; padding-top:10px; border-top:1px solid var(--hairline); display:flex; flex-direction:column; gap:8px; }
.ms-row{ display:flex; align-items:center; gap:10px; font-size:12px; color: var(--text-soft); }
.ms-row b{ width:30px; font-weight:500; }
.ms-row em{ font-style:normal; color: var(--text-faint); font-size:11px; }
.ms-bar{ flex:1; display:flex; height:20px; border-radius:10px; overflow:hidden; background: var(--hairline); }
.ms-bar i{ font-style:normal; display:flex; align-items:center; justify-content:center; font-size:11px; min-width:18px;
  background: var(--accent-soft); border-right:1px solid var(--glass-edge); }
.ms-empty{ color: var(--text-faint); }
.ms-sync{ font-size:12px; color: var(--accent); }
.mood-entry .who{ font-weight:500; color: var(--text-soft); }
.mood-entry.amo .em{ filter: saturate(.9); }
.mood-entry.amo .who{ color: var(--accent); }
.lp-entry .reply b{ color: var(--accent); font-weight:500; }
.lp-entry .reply.pending{ color: var(--text-faint); border-left-style:dashed; }

/* ── 独白本 ── */
.mb-item{ padding:14px 0 16px; border-bottom:1px solid var(--hairline); }
.mb-item:last-child{ border-bottom:0; }
.mb-meta{ font-size:11.5px; color: var(--text-faint); margin-bottom:6px; display:flex; gap:8px; align-items:center; }
.mb-meta .tag{ border:1px solid var(--hairline); border-radius:6px; padding:0 6px; font-size:10.5px; }
.mb-item.dream .tag{ color: var(--accent); border-color: var(--accent-soft); }
.mb-text{ font-size:14.5px; line-height:1.9; color: var(--text); white-space:pre-wrap; }
.mb-item.dream .mb-text{ font-style:italic; color: var(--text-soft); }
.mb-day{ font-size:12px; letter-spacing:.14em; color: var(--text-faint); margin:18px 0 2px; }
.dp-book-link{ display:inline-block; margin-top:8px; font-size:12px; color: var(--accent); background:none; border:0; padding:0; cursor:pointer; font-family: inherit; }
.home-whisper.link{ cursor:pointer; text-decoration: underline dotted; text-underline-offset:4px; }

/* ── 内驱曲线：每一项后面一条今天的小线 ── */
.dp-drive-row .dp-spark{ width:54px; height:16px; flex:none; }
.dp-spark path{ fill:none; stroke: var(--accent); stroke-width:1.3; opacity:.8; }

/* ── 阿墨此刻：生命体征 ── */
.pv-wrap{ margin: -2px 0 18px; padding:14px 14px 10px; border-radius:16px; background: var(--card-bg); border:1px solid var(--card-line); }
.pv-top{ display:flex; align-items:center; gap:12px; }
.pv-heart{ width:30px; height:30px; color: var(--accent); flex:none; animation: heartBeat var(--beat, .85s) ease-in-out infinite; }
.pv-bpm{ font-family: var(--font-en), var(--font-cn); font-size:30px; line-height:1; color: var(--text); font-variant-numeric: tabular-nums; }
.pv-bpm small{ font-size:12px; color: var(--text-faint); margin-left:3px; }
.pv-chord{ margin-left:auto; text-align:right; }
.pv-chord b{ display:block; font-family: var(--font-en), serif; font-size:20px; font-weight:500; color: var(--accent); }
.pv-chord span{ font-size:11px; color: var(--text-faint); }
.pv-meta{ display:flex; gap:14px; margin-top:10px; font-size:12px; color: var(--text-soft); flex-wrap:wrap; }
.pv-tint{ margin-top:8px; font-size:12.5px; color: var(--text-soft); line-height:1.6; }
.pv-spark{ display:block; width:100%; height:46px; margin-top:8px; }
.pv-spark path.line{ fill:none; stroke: var(--accent); stroke-width:1.6; stroke-linejoin:round; stroke-linecap:round; }
.pv-spark path.area{ fill: var(--accent-soft); stroke:none; }

@media (prefers-reduced-motion: reduce){
  .caustics, .caustics::after, .home-pulse .hp-heart, .pv-heart{ animation:none !important; }
}
@media (min-width: 640px){
  .menu-scroll.home{ padding-left: 34px; padding-right: 34px; }
}

/* ── 共读小屋（coread 嵌在小屋里）── */
.coread-wrap{ position:relative; z-index:1; flex:1 1 auto; margin:0 10px calc(10px + env(safe-area-inset-bottom)); border-radius:18px; overflow:hidden;
  border:1px solid var(--glass-edge); background: rgba(247,244,240,.92); }
.coread-frame{ position:absolute; inset:0; width:100%; height:100%; border:0; background:transparent; }
.coread-loading{ position:absolute; inset:0; display:grid; place-items:center; color:#8a8070; font-size:13px; }
#readingPanel{ z-index:205; }

/* ── 一起听歌 ── */
#musicMini{ position:fixed; left:50%; transform:translateX(-50%); z-index:260;
  bottom: calc(var(--composer-h, 56px) + 26px + env(safe-area-inset-bottom) + var(--keyboard-offset, 0px));
  width:min(92vw, 420px); display:flex; align-items:center; gap:4px; padding:6px 8px 6px 6px; border-radius:999px; overflow:hidden;
  background: var(--glass-strong); border:1px solid var(--glass-edge); box-shadow: inset 0 1px 0 var(--glass-hi), 0 10px 26px rgba(0,0,0,.22);
  -webkit-backdrop-filter: blur(20px) saturate(1.4); backdrop-filter: blur(20px) saturate(1.4); }
#musicMini[hidden]{ display:none; }
body:has(.profile-panel.open) #musicMini, body:has(.menu-panel.open) #musicMini{ bottom: calc(18px + env(safe-area-inset-bottom)); }
#musicMini .mm-open{ flex:1; min-width:0; display:flex; align-items:center; gap:9px; background:none; border:0; padding:0; color: var(--text); font: inherit; text-align:left; cursor:pointer; }
#musicMini .mm-cover{ width:34px; height:34px; border-radius:50%; object-fit:cover; flex:none; background: var(--hairline); }
#musicMini.playing .mm-cover{ animation: mmSpin 14s linear infinite; }
@keyframes mmSpin{ to{ transform: rotate(360deg); } }
#musicMini .mm-text{ min-width:0; display:flex; flex-direction:column; line-height:1.25; }
#musicMini .mm-name{ font-size:13px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#musicMini .mm-artist{ font-size:11px; color: var(--text-faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#musicMini .mm-btn{ flex:none; width:32px; height:32px; border-radius:50%; border:0; background:none; color: var(--text); font-size:13px; cursor:pointer; }
#musicMini .mm-close{ font-size:11px; color: var(--text-faint); }
#musicMini .mm-bar{ position:absolute; left:18px; right:18px; bottom:2px; height:2px; border-radius:2px; background: var(--hairline); overflow:hidden; }
#musicMini .mm-bar i{ display:block; height:100%; width:0; background: var(--accent); }
.mp-now{ display:flex; flex-direction:column; align-items:center; text-align:center; }
.mp-cover{ width:min(56vw, 230px); aspect-ratio:1; border-radius:22px; object-fit:cover; background: var(--hairline);
  box-shadow: 0 16px 40px rgba(0,0,0,.28); margin:6px 0 14px; }
.mp-title b{ display:block; font-size:18px; font-weight:500; }
.mp-title span{ display:block; font-size:12.5px; color: var(--text-soft); margin-top:3px; }
.mp-title em{ display:block; font-style:normal; font-size:11.5px; color: var(--accent); margin-top:4px; min-height:14px; }
.mp-prog{ width:100%; display:flex; align-items:center; gap:8px; margin-top:10px; font-size:11px; color: var(--text-faint); font-variant-numeric: tabular-nums; }
.mp-seek{ flex:1; accent-color: var(--accent); }
.mp-ctrl{ display:flex; align-items:center; justify-content:center; gap:16px; margin:8px 0 2px; }
.mp-ctrl button{ background:none; border:0; color: var(--text); font-size:18px; cursor:pointer; }
.mp-ctrl .mp-play{ width:52px; height:52px; border-radius:50%; background: var(--send-bg); color:#fff; font-size:18px; box-shadow: inset 0 1px 0 rgba(255,255,255,.3); }
.mp-ctrl .mp-q, .mp-ctrl .mp-mode{ font-size:12px; color: var(--text-faint); }
.mp-lyric{ width:100%; max-height:150px; overflow-y:auto; margin-top:12px; mask-image: linear-gradient(transparent, #000 22%, #000 78%, transparent);
  -webkit-mask-image: linear-gradient(transparent, #000 22%, #000 78%, transparent); scrollbar-width:none; }
.mp-lyric::-webkit-scrollbar{ display:none; }
.mp-lyric p{ margin:0; padding:5px 0; font-size:13px; color: var(--text-faint); transition: color .3s, transform .3s; }
.mp-lyric p small{ display:block; font-size:11px; opacity:.8; }
.mp-lyric p.on{ color: var(--text); transform: scale(1.04); }
.mp-lyric p.none{ padding:20px 0; }
.mp-tabs{ display:flex; margin:2px 0 12px; }
.mp-tabs button{ flex:1; }
.mp-list{ margin-top:10px; }
.mp-song{ display:flex; align-items:center; gap:10px; padding:8px 2px; border-bottom:1px solid var(--hairline); cursor:pointer; }
.mp-song:last-child{ border-bottom:0; }
.mp-song img{ width:40px; height:40px; border-radius:10px; object-fit:cover; flex:none; background: var(--hairline); }
.mp-song span{ flex:1; min-width:0; display:flex; flex-direction:column; }
.mp-song b{ font-size:14px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mp-song small{ font-size:11.5px; color: var(--text-faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mp-add{ flex:none; width:30px; height:30px; border-radius:50%; border:1px solid var(--glass-edge); background: var(--glass); color: var(--text-soft); cursor:pointer; }
.mp-now-tag{ font-style:normal; font-size:11px; color: var(--accent); }
.mp-qr{ display:flex; justify-content:center; margin:14px 0 8px; }
.mp-qr img, .mp-qr canvas{ border-radius:12px; border:8px solid #fff; }
.music-bubble{ padding:0 !important; background:transparent !important; border:0 !important; box-shadow:none !important; }
.music-card{ display:flex; align-items:center; gap:10px; min-width:min(64vw, 260px); padding:9px 10px 9px 9px; border-radius:18px;
  background: var(--glass); border:1px solid var(--glass-edge); box-shadow: inset 0 1px 0 var(--glass-hi), 0 6px 18px rgba(0,0,0,.1);
  -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); color: var(--text); }
.music-card .mc-cover{ width:48px; height:48px; border-radius:12px; object-fit:cover; flex:none; background: var(--hairline); }
.music-card .mc-ic{ width:48px; height:48px; border-radius:12px; display:grid; place-items:center; font-size:20px; color: var(--accent); background: var(--accent-soft); flex:none; }
.music-card .mc-text{ flex:1; min-width:0; display:flex; flex-direction:column; line-height:1.35; }
.music-card b{ font-size:14px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.music-card small{ font-size:11.5px; color: var(--text-soft); }
.music-card em{ font-style:normal; font-size:11px; color: var(--accent); margin-top:2px; }
.music-card .mc-play{ flex:none; width:38px; height:38px; border-radius:50%; border:0; background: var(--send-bg); color:#fff; cursor:pointer; }
.music-card.pending{ opacity:.75; }
body:has(#musicPanel.open) #musicMini{ display:none; }
body:has(#musicMini:not([hidden])) .lp-body{ padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
body:has(#musicMini:not([hidden])) .menu-scroll.home{ padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
