/* ============================================================================
   apple.css — 彼岸回响 · 苹果风设计系统 v3
   基准：墨黑 #1d1d1f / 白 + 唯一蓝 #0071e3；只有「灵魂光球」保留彩度。
   男 → html[data-theme=dark]（黑底）   女 → html[data-theme=light]（白底）
   最后引入，覆盖 styles.css / theme.css / intro.css / orb.css 的旧配色。
   ============================================================================ */

:root{
  --ap-font:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",Roboto,sans-serif;
  --ap-r:16px; --ap-r-sm:12px; --ap-r-pill:980px;
  --ap-nav-h:46px; --ap-tab-h:50px;
  --ap-max:720px;
}

/* ---------- 主题 token ---------- */
:root[data-theme=light]{
  --ap-bg:#f2f2f7; --ap-surface:#ffffff; --ap-surface-2:#ffffff; --ap-elev:#ffffff;
  --ap-text:#1d1d1f; --ap-text-2:#6e6e73; --ap-text-3:#8e8e93;
  --ap-line:rgba(60,60,67,.14); --ap-line-2:rgba(60,60,67,.26);
  --ap-accent:#0071e3; --ap-accent-2:#0062c4; --ap-accent-soft:rgba(0,113,227,.10);
  --ap-fill:rgba(120,120,128,.12); --ap-fill-2:rgba(120,120,128,.20);
  --ap-nav:rgba(249,249,251,.80);
  --ap-shadow:0 1px 2px rgba(0,0,0,.04),0 10px 30px rgba(0,0,0,.07);
  --ap-shadow-sm:0 1px 2px rgba(0,0,0,.05);
  color-scheme:light;
}
:root[data-theme=dark]{
  --ap-bg:#000000; --ap-surface:#1c1c1e; --ap-surface-2:#2c2c2e; --ap-elev:#1c1c1e;
  --ap-text:#f5f5f7; --ap-text-2:#a1a1a6; --ap-text-3:#8e8e93;
  --ap-line:rgba(255,255,255,.13); --ap-line-2:rgba(255,255,255,.26);
  --ap-accent:#0a84ff; --ap-accent-2:#409cff; --ap-accent-soft:rgba(10,132,255,.16);
  --ap-fill:rgba(120,120,128,.24); --ap-fill-2:rgba(120,120,128,.36);
  --ap-nav:rgba(12,12,14,.76);
  --ap-shadow:none; --ap-shadow-sm:none;
  color-scheme:dark;
}
/* 未登录/兜底：按白底 */
:root:not([data-theme]){--ap-bg:#f2f2f7;--ap-surface:#fff;--ap-surface-2:#fff;--ap-elev:#fff;--ap-text:#1d1d1f;--ap-text-2:#6e6e73;--ap-text-3:#8e8e93;--ap-line:rgba(60,60,67,.14);--ap-line-2:rgba(60,60,67,.26);--ap-accent:#0071e3;--ap-accent-2:#0062c4;--ap-accent-soft:rgba(0,113,227,.10);--ap-fill:rgba(120,120,128,.12);--ap-fill-2:rgba(120,120,128,.20);--ap-nav:rgba(249,249,251,.80);--ap-shadow:0 1px 2px rgba(0,0,0,.04),0 10px 30px rgba(0,0,0,.07);--ap-shadow-sm:0 1px 2px rgba(0,0,0,.05);color-scheme:light}

/* ---------- base ---------- */
html,body{background:var(--ap-bg)!important;transition:background-color .6s ease,color .6s ease}
/* 切换阿瑶(黑底)/阿辰(白底)时，背景与文字平滑渐变过渡，不生硬跳变。 */
.app-shell,.page,.topbar,.tabbar,.companion-home,.welcome--ritual,.ritual-splash{transition:background-color .6s ease,color .6s ease,border-color .6s ease}
body{font-family:var(--ap-font)!important;color:var(--ap-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em}
.app-shell,.app-shell.public-story{background:var(--ap-bg)!important;color:var(--ap-text)!important}
.app-shell h1,.app-shell h2,.app-shell h3,.app-shell h4,.app-shell h5,
.welcome--ritual h1,.welcome--ritual h2,.welcome--ritual h3,.welcome--ritual .welcome-brand,
.topbar h1{font-family:var(--ap-font)!important;letter-spacing:-.021em}
a{-webkit-tap-highlight-color:transparent}
::selection{background:var(--ap-accent-soft)}

/* ---------- 顶部导航（iOS 半透明导航栏）---------- */
.topbar{position:sticky;top:0;z-index:40;height:var(--ap-nav-h);display:flex;align-items:center;gap:10px;
  padding:0 16px;background:var(--ap-nav)!important;color:var(--ap-text)!important;
  border:0!important;border-bottom:.5px solid var(--ap-line)!important;box-shadow:none!important;
  backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px)}
.brand-mark{width:28px;height:28px;border-radius:7px;overflow:hidden;flex:none;background:var(--ap-elev);box-shadow:none!important}
.brand-mark img{width:100%;height:100%;object-fit:cover;display:block}
.topbar h1{flex:1;min-width:0;font-size:17px!important;font-weight:600;line-height:1.2;margin:0;color:var(--ap-text)!important;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar h1 small{display:block;font-size:10.5px!important;font-weight:500;letter-spacing:.02em;color:var(--ap-text-3)!important;line-height:1.3}
.topbar .sub{font-size:13px;color:var(--ap-text-2)!important;flex:none;max-width:38%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app-shell[data-view=home] .topbar,.app-shell[data-view=space] .topbar,.app-shell[data-view=ballroom] .topbar,
.app-shell[data-view=dance] .topbar{background:var(--ap-nav)!important;color:var(--ap-text)!important}
.app-shell[data-view=home] .topbar small,.app-shell[data-view=home] .topbar .sub,
.app-shell[data-view=space] .topbar small,.app-shell[data-view=space] .topbar .sub,
.app-shell[data-view=ballroom] .topbar small,.app-shell[data-view=ballroom] .topbar .sub,
.app-shell[data-view=dance] .topbar small,.app-shell[data-view=dance] .topbar .sub{color:var(--ap-text-3)!important}

/* ---------- 页面容器 ---------- */
.page{padding:20px 20px calc(var(--ap-tab-h) + 112px);max-width:none;margin:0 auto}
.app-shell[data-view=home] .page,.app-shell[data-view=space] .page{padding:20px 20px calc(var(--ap-tab-h) + 112px)}
@media(min-width:760px){.page{max-width:var(--ap-max);padding-left:24px;padding-right:24px}}

/* ---------- 标题 / 眉标 ---------- */
.eyebrow{display:inline-block;font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--ap-text-3)!important;text-transform:none;margin-bottom:6px}
h2,.app-shell h2{font-size:28px!important;font-weight:700;line-height:1.22!important;letter-spacing:-.024em;margin:4px 0 10px;color:var(--ap-text)}
h3,.app-shell h3,.card h3{font-size:20px!important;font-weight:600;line-height:1.3!important;letter-spacing:-.02em;margin:0 0 8px;color:var(--ap-text)}
h4{font-size:16px;font-weight:600;letter-spacing:-.01em;color:var(--ap-text)}
p{color:var(--ap-text)}
.muted{color:var(--ap-text-2)!important}

/* ---------- 卡片（iOS 分组圆角卡）---------- */
.card{background:var(--ap-surface)!important;border:0!important;border-radius:var(--ap-r)!important;
  box-shadow:var(--ap-shadow-sm)!important;padding:18px!important;color:var(--ap-text)!important}

/* ---------- 按钮：胶囊 ---------- */
.btn{font-family:var(--ap-font)!important;min-height:48px;border-radius:var(--ap-r-pill)!important;border:0!important;
  background:var(--ap-accent)!important;color:#fff!important;font-size:16px!important;font-weight:600!important;
  letter-spacing:-.01em;padding:12px 22px;box-shadow:none!important;transition:opacity .15s,transform .1s}
.btn:active{opacity:.86;transform:scale(.985)}
.btn.plain,.btn.plain{background:var(--ap-fill)!important;color:var(--ap-text)!important}
.btn.ghost{background:var(--ap-accent-soft)!important;color:var(--ap-accent)!important}
.btn.sm{min-height:34px!important;padding:6px 14px;font-size:14px!important;border-radius:var(--ap-r-pill)!important}
.btn.grow{flex:1}.btn.block{display:flex;width:100%}
.text-button{background:none;border:0;color:var(--ap-accent)!important;font:inherit;font-size:15px;padding:4px;cursor:pointer}
.app-shell[data-view=home] .btn.plain,.app-shell[data-view=space] .btn.plain,.app-shell[data-view=ballroom] .btn.plain,
.app-shell[data-view=dance] .btn.plain{background:var(--ap-fill)!important;color:var(--ap-text)!important}
.app-shell[data-view=home] .btn.ghost{background:var(--ap-accent-soft)!important;color:var(--ap-accent)!important}

/* ---------- 表单控件 ---------- */
.field span{font-size:13px;font-weight:500;color:var(--ap-text-2)!important}
input[type=text],input[type=tel],input[type=number],input[type=email],select,textarea,
.field input,.field select,.field textarea{
  font-family:var(--ap-font)!important;background:var(--ap-fill)!important;color:var(--ap-text)!important;
  border:0!important;border-radius:var(--ap-r-sm)!important;padding:13px 14px!important;font-size:16px!important;
  box-shadow:none!important;outline:none}
input:focus,select:focus,textarea:focus{box-shadow:0 0 0 3px var(--ap-accent-soft)!important}
input::placeholder,textarea::placeholder{color:var(--ap-text-3)}

/* ---------- chips / 分段 ---------- */
.chip{background:var(--ap-fill)!important;color:var(--ap-text)!important;border:0!important;border-radius:var(--ap-r-pill)!important;
  padding:8px 14px;font-size:14px;font-weight:500;min-height:0}
.chip.on,.chip[aria-pressed=true]{background:var(--ap-accent)!important;color:#fff!important}
.segment-nav{background:var(--ap-fill)!important;border-radius:var(--ap-r-pill)!important;padding:3px!important;gap:2px!important}
.segment-nav a{color:var(--ap-text)!important;border-radius:var(--ap-r-pill)!important;font-weight:500}
.segment-nav a[aria-current]{background:var(--ap-elev)!important;color:var(--ap-text)!important;box-shadow:var(--ap-shadow-sm)!important}
.social-goals a{background:var(--ap-fill)!important;color:var(--ap-text)!important;border-radius:var(--ap-r-pill)!important;box-shadow:none!important}
.social-goals a[aria-current]{background:var(--ap-accent)!important;color:#fff!important}

/* ---------- 提示条 ---------- */
.callout{border:0!important;border-radius:var(--ap-r-sm)!important;background:var(--ap-fill)!important;color:var(--ap-text)!important;padding:14px 16px;font-size:15px}
.callout.info{background:var(--ap-accent-soft)!important;color:var(--ap-accent)!important}
.callout.err{background:rgba(255,59,48,.14)!important;color:#ff453a!important}
.callout.warn{background:rgba(255,159,10,.16)!important;color:#ff9f0a!important}

/* ---------- 底部标签栏（iOS）---------- */
.tabbar{height:var(--ap-tab-h);padding:0;display:flex;align-items:stretch;border:0!important;
  border-top:.5px solid var(--ap-line)!important;background:var(--ap-nav)!important;
  backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);box-shadow:none!important}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--ap-text-3)!important;font-size:10.5px!important;font-weight:500;letter-spacing:.01em;
  background:none!important;border-radius:0!important;text-decoration:none;position:relative}
.tabbar a svg{width:25px;height:25px;display:block}
.tabbar a small{display:none!important}
.tabbar a.active{color:var(--ap-accent)!important;background:none!important}
.tabbar a.active::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:26px;height:2.5px;border-radius:99px;background:var(--ap-accent)}
.app-shell[data-view=home] .tabbar,.app-shell[data-view=space] .tabbar,.app-shell[data-view=ballroom] .tabbar,
.app-shell[data-view=dance] .tabbar{background:var(--ap-nav)!important}

/* ============================================================================
   各页面
   ============================================================================ */

/* ---- 此岸 · 陪伴 ---- */
.app-shell[data-view=home]{background:var(--ap-bg)!important;color:var(--ap-text)!important}
.companion-top .eyebrow{color:var(--ap-text-3)!important;font-family:var(--ap-font)!important;font-weight:600}
.companion-top .btn.plain{background:var(--ap-fill)!important;color:var(--ap-text)!important}
.companion-name{font-family:var(--ap-font)!important;color:var(--ap-text)!important;font-weight:600;font-size:22px;letter-spacing:-.02em}
.companion-name small{color:var(--ap-text-2)!important;font-family:var(--ap-font)!important;font-size:13px}
.companion-home h2{color:var(--ap-text)!important;font-family:var(--ap-font)!important;font-size:26px!important;font-weight:600;line-height:1.4!important;margin-top:14px}
.companion-motto{color:var(--ap-text-3)!important;font-family:var(--ap-font)!important}
/* =========================================================================
   此岸 · 灵魂光球（阿瑶=浅珍珠白球 / 阿辰=深色玻璃球）
   光球 =「角色底色圆（内联注入）」+「内部光刃 SVG」两层，还原 19:51 初版质感：
   白珠配黑底、黑珠配白底，柔光收边。
   注意：styles.css:659 的 `.companion-light span{100×140 绝对定位}` 旧规则
   会误伤 .orb-mark，下面用高特异度覆盖，并让布局为受约束的纵向居中列。
   ========================================================================= */
.companion-home{background:var(--ap-bg)!important;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  min-height:calc(100svh - var(--ap-nav-h) - var(--ap-tab-h));padding:64px 20px 40px;position:relative;flex-wrap:nowrap}
.companion-home .companion-top{position:absolute;top:14px;left:20px;right:20px;display:flex;align-items:center;justify-content:space-between;gap:12px}
/* 光球舞台：光球 + 漫画气泡（气泡悬浮在光球右上方，不参与布局占位） */
.companion-home .companion-stage{position:relative;display:flex;align-items:center;justify-content:center;margin:4px 0 10px}
.companion-home .companion-orbs{position:relative;display:flex;align-items:center;justify-content:center}
.companion-home .companion-light{position:relative!important;display:flex;align-items:center;justify-content:center;
  width:216px!important;height:216px!important;margin:0!important;padding:0;background:none;border:0;cursor:pointer;flex:none}
/* 覆盖 styles.css 误伤的 legacy `span` 规则（提高特异度）。光球 span 现为按钮直接子元素。
   注意：此处不能写 background:none —— 球体底色由 characters.js 内联注入。 */
.companion-home .companion-light>span.orb-mark{position:relative!important;left:auto!important;top:auto!important;
  width:196px!important;height:196px!important;border-radius:50%!important;overflow:hidden;display:block;isolation:isolate;
  animation:none!important;filter:none!important;z-index:1}
/* 光球外的呼吸光晕：由球体自带 box-shadow 提供，这里不再叠加 */
.companion-home .companion-light::before{content:none!important}
.companion-home .companion-light>span.orb-mark svg{display:block;width:100%!important;height:100%!important;filter:none!important;padding:0!important}

/* 静置 3 秒后浮现的磨砂气泡（无冷场陪伴） */
.companion-home .companion-idle{position:absolute;left:calc(50% + 70px);top:-20px;z-index:3;max-width:210px;padding:11px 16px;border-radius:18px 18px 18px 4px;
  font-size:14px;line-height:1.45;cursor:pointer;color:var(--ap-text);
  background:color-mix(in srgb,var(--ap-surface) 70%,transparent);border:1px solid var(--ap-line);backdrop-filter:blur(14px) saturate(1.2);
  box-shadow:0 10px 26px rgba(0,0,0,.16);animation:idle-in .45s ease both}
.companion-home .companion-idle::after{content:"";position:absolute;left:14px;bottom:-9px;width:14px;height:14px;background:inherit;border-right:1px solid var(--ap-line);border-bottom:1px solid var(--ap-line);transform:rotate(45deg);border-bottom-right-radius:4px}
@keyframes idle-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:560px){.companion-home .companion-idle{left:calc(50% + 54px);font-size:13px;padding:9px 13px}}

/* 底部暖金大按钮：和我说说话呗 */
.companion-home .companion-talk{display:inline-flex;align-items:center;justify-content:center;min-width:240px;min-height:56px;padding:0 32px;
  font-size:17px;font-weight:600;letter-spacing:.5px;border:0;border-radius:999px;cursor:pointer;
  background:linear-gradient(135deg,#f7e2b0,#f0cf8e);color:#5b4318;box-shadow:0 10px 26px rgba(245,215,158,.45);transition:transform .18s ease,box-shadow .18s ease}
.companion-home .companion-talk:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(245,215,158,.55)}
.companion-home .companion-talk:active{transform:translateY(0) scale(.98)}

.companion-home .companion-name{margin-top:2px}
.companion-home h2{margin-top:16px;max-width:20em}
.companion-home .companion-talk{margin-top:26px}
.companion-home .companion-motto{margin-top:18px}

/* 关怀气泡：锚定在光球「下方」，向下展开，永不与顶栏/光球重叠 */
.companion-home .companion-stage{position:relative;isolation:isolate}
.companion-home .care-bubble{position:absolute!important;left:50%!important;top:calc(100% + 14px)!important;bottom:auto!important;
  transform:translateX(-50%)!important;z-index:20!important;
  width:min(92vw,400px)!important;max-height:min(48vh,360px)!important;overflow:auto!important;
  margin:0!important;text-align:left}
/* 气泡出现时隐藏漫画气泡，避免重叠 */
.companion-home:has(.care-bubble:not([hidden])) .comic-bubble{opacity:0;pointer-events:none}
/* 气泡展开时上移光球，给下方气泡留出空间 */
.companion-home:has(.care-bubble:not([hidden])){justify-content:flex-start!important;padding-top:74px}
.companion-home .care-bubble{background:var(--ap-surface)!important;border:.5px solid var(--ap-line)!important;color:var(--ap-text)!important;border-radius:20px!important;box-shadow:var(--ap-shadow)!important}
.companion-home .care-bubble .btn.plain{background:var(--ap-fill)!important;color:var(--ap-text)!important}
.companion-home .care-bubble .btn.ghost{background:var(--ap-accent-soft)!important;color:var(--ap-accent)!important}
.companion-home .care-memory-note{color:var(--ap-text-3)!important}
/* 宽屏（experience-wide，≥1000px）下把内部内容收成居中的窄列，避免散架 */
@media(min-width:1000px){
  .companion-home>.companion-top{max-width:var(--ap-max);left:50%;right:auto;transform:translateX(-50%);width:calc(100% - 48px)}
  .companion-home h2{max-width:16em}
}

/* 通用光球容器（此岸 / 回声入口 / 面板头部共用）
   底色圆由 characters.js 内联注入；此处负责柔光、圆形裁切与光刃消隐蒙版。
   阿瑶（白珠）用 normal 混合让浅色光刃浮在珍珠底上；阿辰（黑珠）用 screen 让光刃透亮。 */
.orb-mark{position:relative;display:block;border-radius:50%;overflow:hidden;isolation:isolate}
.orb-mark svg{position:absolute;inset:0;display:block;width:100%;height:100%;filter:none;pointer-events:none}

/* ——— 阿瑶：浅色珍珠白球（配黑背景）——— */
.orb-mark.orb-light{
  background:radial-gradient(circle at 40% 30%,#ffffff 0%,#eaeef6 40%,#d2d9e5 72%,rgba(200,208,222,.5) 88%,rgba(200,208,222,0) 100%);
  box-shadow:0 0 60px #cdd9e8aa,inset 0 12px 28px rgba(255,255,255,.9),inset 0 -18px 32px rgba(148,162,188,.2);
}
.orb-mark.orb-light svg{mix-blend-mode:normal;
  -webkit-mask:radial-gradient(circle at 50% 50%,#000 0 50%,rgba(0,0,0,.55) 82%,rgba(0,0,0,0) 99%);
          mask:radial-gradient(circle at 50% 50%,#000 0 50%,rgba(0,0,0,.55) 82%,rgba(0,0,0,0) 99%)}

/* ——— 阿辰：深色玻璃球（配白背景）——— */
.orb-mark.orb-dark{
  background:radial-gradient(circle at 50% 44%,#17284e 0%,#0b152e 36%,#050a16 60%,rgba(4,8,16,.42) 80%,rgba(4,8,16,0) 100%);
  box-shadow:0 0 70px #4ea8d833,inset 0 10px 30px rgba(255,255,255,.05),inset 0 -18px 36px rgba(80,158,212,.14);
}
.orb-mark.orb-dark svg{mix-blend-mode:screen;
  -webkit-mask:radial-gradient(circle at 50% 50%,#000 0 36%,rgba(0,0,0,.62) 66%,rgba(0,0,0,0) 94%);
          mask:radial-gradient(circle at 50% 50%,#000 0 36%,rgba(0,0,0,.62) 66%,rgba(0,0,0,0) 94%)}
/* 玻璃球高光 + 边缘压暗，形成球体纵深（初版 .orb-heart::after） */
.orb-mark.orb-dark::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;z-index:3;
  background:radial-gradient(ellipse 64% 44% at 36% 22%,rgba(196,216,240,.10),transparent 70%),
             radial-gradient(circle at 50% 50%,transparent 24%,rgba(2,4,10,.34) 60%,rgba(2,4,10,.8) 100%)}

/* 小光球（回声入口 / 面板头部）：白珠浅描边、黑珠浅描边，保证在头栏内可辨 */
.orb-mark--sm{width:34px;height:34px;border-radius:50%;overflow:hidden;flex:none}
.orb-mark--sm.orb-light{box-shadow:0 0 0 1px rgba(120,130,150,.24),0 4px 12px rgba(0,0,0,.12)}
.orb-mark--sm.orb-dark{box-shadow:0 0 0 1px rgba(255,255,255,.22),0 4px 12px rgba(0,0,0,.22)}
.echo-launcher{display:inline-flex;align-items:center;gap:8px}
/* 覆盖 styles.css `.echo-launcher svg{width:36px}` 的误伤：只约束光球内 svg 与自带图标 */
.echo-launcher .orb-mark svg{width:100%!important;height:100%!important;padding:0!important}
.echo-launcher .orb-mark--sm{margin-right:0;width:34px!important;height:34px!important}
/* 中和 styles.css / theme.css 里针对旧版此岸结构的遗留规则（它们会误伤新 DOM） */
.companion-home .companion-stage .companion-light{width:216px!important;height:216px!important;margin:0!important}
.companion-home .companion-stage .companion-light span.orb-mark{width:196px!important;height:196px!important;left:auto!important;top:auto!important;border-radius:50%!important;filter:none!important;animation:none!important}
.companion-home .companion-stage .companion-light b{display:none}
.companion-home .companion-stage .companion-light i{display:none}
.companion-home .care-bubble+.companion-light{margin-top:0}
.companion-home:has(.care-bubble:not([hidden])) .companion-light{width:216px!important;height:216px!important;margin:0!important}
.companion-home:has(.care-bubble:not([hidden])) .companion-light span.orb-mark{width:196px!important;height:196px!important;left:auto!important;top:auto!important}
.echo-panel-header{display:flex;align-items:center;gap:12px}
.echo-panel-header>div{display:flex;align-items:center;gap:10px}
.echo-panel-header strong{display:flex;flex-direction:column;line-height:1.25;font-size:17px}
.echo-panel-header small{font-weight:400;font-size:12.5px;color:var(--ap-text-2)}

/* 顶栏：浅色 / 深色背景自由切换 */
.theme-toggle{margin-left:auto;flex:none;width:38px;height:38px;border-radius:50%;border:0;background:var(--ap-fill);color:var(--ap-text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s}
.theme-toggle:hover{background:var(--ap-fill-2)}
.theme-toggle svg{width:20px;height:20px}

/* ---- 彼岸 · 小岛（改为苹果分组列表，去卡通插画）---- */
.app-shell[data-view=space]{background:var(--ap-bg)!important;color:var(--ap-text)!important}
.island-heading{max-width:var(--ap-max);margin:0 auto;padding:14px 0 6px}
.island-heading .eyebrow{color:var(--ap-text-3)!important}
.island-heading h2{color:var(--ap-text)!important;font-size:30px!important}
.island-heading>p{color:var(--ap-text-2)!important}
.island-card{max-width:var(--ap-max);margin:16px auto;background:none!important;border:0!important}
.island-caption{display:flex;align-items:center;gap:12px;background:var(--ap-surface);border:0;border-radius:var(--ap-r);
  padding:14px 16px;color:var(--ap-text)!important;box-shadow:var(--ap-shadow-sm)}
.island-pet{width:44px;height:44px;flex:none;display:flex;align-items:center;justify-content:center;border-radius:11px;
  background:var(--ap-fill);overflow:hidden;color:var(--ap-text);padding:0!important}
.island-pet svg{width:26px;height:26px;display:block}
.island-companion{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none;color:var(--ap-accent);font-size:15px}
.island-caption strong{color:var(--ap-text)!important;font-weight:600}
.island-caption p{color:var(--ap-text-2)!important}
.island-map{display:block!important;background:var(--ap-surface)!important;border-radius:var(--ap-r)!important;overflow:hidden;margin-top:16px;box-shadow:var(--ap-shadow-sm)!important;padding:0!important;
  position:static!important;aspect-ratio:auto!important;max-height:none!important;height:auto!important;isolation:auto}
.island-art{display:none!important}
.island-place{display:flex!important;flex-direction:column;align-items:flex-start;gap:2px;width:100%!important;
  background:none!important;border:0!important;border-top:.5px solid var(--ap-line)!important;border-radius:0!important;
  padding:15px 18px!important;color:var(--ap-text)!important;text-align:left;font:inherit;text-decoration:none;
  box-shadow:none!important;margin:0!important;min-height:0!important;justify-content:center;
  position:relative!important;left:auto!important;top:auto!important;transform:none!important}
.island-place:first-of-type{border-top:0!important}
.island-place strong{color:var(--ap-text)!important;font-size:16px;font-weight:600}
.island-place span{color:var(--ap-text-2)!important;font-size:13.5px}
.island-place:not(:disabled)::after{content:"›";position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--ap-text-3);font-size:22px;line-height:1}
.island-place:disabled{opacity:.5}
.island-note,.island-privacy{color:var(--ap-text-3)!important;max-width:var(--ap-max);margin:14px auto;font-size:13px}
.island-private-link a{color:var(--ap-accent)!important}
.ballroom-entry{max-width:var(--ap-max);margin:16px auto;background:var(--ap-surface)!important;border:0!important;border-radius:var(--ap-r)!important;color:var(--ap-text)!important;box-shadow:var(--ap-shadow-sm)!important}

/* ---- 回响 · 消息 ---- */
.message-heading h2{color:var(--ap-text)!important}
.message-heading p{color:var(--ap-text-2)!important}
.message-list{background:var(--ap-surface)!important;border-radius:var(--ap-r)!important;box-shadow:var(--ap-shadow-sm)!important;padding:4px 18px!important}
.message-row{color:var(--ap-text)!important;padding:16px 0!important}
.message-row+.message-row{border-top:.5px solid var(--ap-line)!important}
.message-row .avatar{background:var(--ap-fill)!important;color:var(--ap-text)!important;border-radius:14px!important;width:50px!important;height:50px!important}
.message-person small{color:var(--ap-text-2)!important}
.message-unread{background:var(--ap-accent)!important;color:#fff!important}
.message-empty>span{color:var(--ap-accent)!important}
.message-empty p{color:var(--ap-text-2)!important}

/* ---- 我的 · 个人 ---- */
.app-shell[data-view=profile]{background:var(--ap-bg)!important;color:var(--ap-text)!important}
.app-shell[data-view=profile] .card{background:var(--ap-surface)!important;border-radius:var(--ap-r)!important;padding:4px 18px!important;border-bottom:0!important}
.app-shell[data-view=profile] .profile-menu>a{border-bottom:.5px solid var(--ap-line)!important;padding:16px 0!important;color:var(--ap-text)!important}
.app-shell[data-view=profile] .profile-menu>a:last-child{border-bottom:0!important}
.profile-intro{background:var(--ap-surface)!important;border-radius:var(--ap-r)!important;padding:18px!important;box-shadow:var(--ap-shadow-sm)}
.profile-intro .avatar{background:var(--ap-accent)!important;color:#fff!important}
.profile-menu small,.profile-footnote{color:var(--ap-text-2)!important}

/* ---- 开屏 · 欢迎 ---- */
.welcome--ritual,.ritual-splash{background:var(--ap-bg)!important}
.welcome--ritual .welcome-nav{background:var(--ap-nav)!important;color:var(--ap-text)!important;border-bottom:.5px solid var(--ap-line)!important;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px)}
.welcome--ritual .welcome-brand{color:var(--ap-text)!important}
.welcome--ritual .welcome-brand small{color:var(--ap-text-3)!important;font-family:var(--ap-font)!important}
.welcome--ritual .welcome-login{color:var(--ap-accent)!important}
.ritual-sound{color:var(--ap-text-2)!important;border-color:var(--ap-line-2)!important;background:transparent!important}
.ritual-aurora{opacity:.5}
.ritual-voice{background:var(--ap-surface)!important;border:.5px solid var(--ap-line)!important;box-shadow:var(--ap-shadow-sm)!important}
.ritual-voice p{color:var(--ap-text)!important}
.ritual-voice button{color:var(--ap-accent)!important}
.ritual-caption,.ritual-caption span{color:var(--ap-text-3)!important}
.ritual-caption span.is-spoken{color:var(--ap-text)!important;text-shadow:none!important}
.ritual-slogan{color:var(--ap-text)!important;font-family:var(--ap-font)!important;font-weight:600;letter-spacing:-.01em;-webkit-text-stroke:0!important;text-shadow:none!important}
.ritual-scroll{color:var(--ap-text-3)!important}

/* ---- 回声面板 / 悬浮入口 ---- */
.echo-launcher{background:var(--ap-accent)!important;color:#fff!important;border-radius:var(--ap-r-pill)!important;box-shadow:var(--ap-shadow)!important}
.echo-launcher svg{color:#fff}
.echo-panel{background:var(--ap-surface)!important;border:.5px solid var(--ap-line)!important;border-radius:20px!important;color:var(--ap-text)!important;box-shadow:var(--ap-shadow)!important}
.echo-panel-header strong{color:var(--ap-text)!important}
.echo-panel-header small{color:var(--ap-text-3)!important}
.echo-bubble{background:var(--ap-fill)!important;color:var(--ap-text)!important}
.echo-bubble.me{background:var(--ap-accent)!important;color:#fff!important}
.echo-option{background:var(--ap-fill)!important;color:var(--ap-text)!important;border-radius:var(--ap-r-sm)!important}
.echo-modes button{background:var(--ap-fill)!important;color:var(--ap-text)!important}
.echo-modes button[aria-pressed=true]{background:var(--ap-accent)!important;color:#fff!important}

/* ---- 正文链接 / 折叠标题（修：旧墨蓝 --brand 在深色底不可见）---- */
.app-shell .card>a:not(.btn),
.app-shell details>div>a:not(.btn),
.app-shell .message-footer a,
.app-shell .echo-chat-entry a{color:var(--ap-accent)!important;text-decoration:none;font-weight:500}
.app-shell summary{color:var(--ap-text)!important}
.app-shell summary small{color:var(--ap-text-3)!important;font-weight:500;font-size:13px}
.app-shell .request-outgoing>summary,.app-shell .profile-plans>summary{color:var(--ap-text)!important}
/* 通用链接：覆盖 styles.css 的 --brand（深海军蓝，黑底下不可见） */
.app-shell .page a:not(.btn):not(.chip){color:var(--ap-accent)!important;text-decoration:none;font-weight:500}

/* 给右下角悬浮「和回声聊聊」留出空间，避免遮住最后一张卡 */
.app-shell:not([data-view=home]) .page{padding-bottom:calc(var(--ap-tab-h) + 112px)}

/* ---- 通用 ---- */
.avatar{background:var(--ap-fill)!important;color:var(--ap-text)!important}
.spinner,.boot{color:var(--ap-text-2)}
.fun-tag-editor h4{color:var(--ap-text)}

@media(prefers-reduced-motion:reduce){.btn{transition:none}}
