/* Terminal PRD theme. One palette and one typography contract across all routes. */
:root{--space:#0A1128;--warm:#FDFBF7;--gold:#F5D79E;--ink:#1A2A3A;--bg:#FDFBF7;--brand:#1A2A3A;--brand-soft:#f6ead1;--ink-2:#637080;--line:#e6e1d8;--shadow:none;--font-body:'SF Pro Display',-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei','Segoe UI',sans-serif;--font-heading:'Bian Serif','SF Pro Display',-apple-system,'Segoe UI','Songti SC',serif}
body{background:var(--space);font-family:var(--font-body);font-size:16px;line-height:1.75;color:var(--ink)}button,input,select,textarea{font-family:var(--font-body);line-height:1.6}h1,h2,h3{font-family:var(--font-heading);font-weight:400;line-height:1.65}h4{line-height:1.65}.topbar h1{font-size:18px;line-height:1.6}.topbar h1 small{line-height:1.6;letter-spacing:1px}.app-shell{background:var(--warm)}.topbar{background:#fdfbf7f5;border:0;box-shadow:none}.brand-mark{box-shadow:none}.card{box-shadow:none;border:0;background:var(--warm);border-radius:22px}.btn{box-shadow:none;line-height:1.6}.tabbar{border:0;background:#fdfbf7f7;box-shadow:none}.tabbar a{line-height:1.6}.tabbar span{line-height:1.6}.tabbar a.active{background:#f5d79e44;color:var(--ink);border-radius:20px}.app-shell[data-view=profile] .card{padding:22px 0;border-radius:0;background:transparent;border-bottom:1px solid #e7e2d955}.app-shell[data-view=profile] .profile-menu>a{border-bottom:0;padding:18px 0}.profile-intro .avatar{background:var(--space);color:var(--gold)}.profile-intro{margin-bottom:10px}.profile-menu small,.profile-footnote{font-size:14px;line-height:1.8}.profile-plans .row{padding:12px 0;flex-wrap:wrap}
/* 此岸 is a quiet room, with no plans, recommendations or store. */
.app-shell[data-view=home]{background:var(--space);color:var(--warm)}.app-shell[data-view=home] .topbar{background:var(--space);color:var(--warm)}.app-shell[data-view=home] .topbar small,.app-shell[data-view=home] .topbar .sub{color:#d4d9e3}.app-shell[data-view=home] .page{padding:14px 20px 24px}.companion-home{min-height:calc(100svh - 190px);margin:0;padding:58px 16px 22px;border-radius:0;background:radial-gradient(ellipse at 50% 42%,#f5d79e0b,transparent 48%),var(--space)}.companion-top{top:4px}.companion-top .eyebrow{color:var(--gold);font-family:var(--font-heading)}.companion-top .btn{background:#ffffff08;border:0;color:#dbe2ef}.companion-name{font-family:var(--font-heading);color:var(--warm)}.companion-name small{font-family:var(--font-body);color:#b5becd}.companion-home h2{color:var(--warm);font-family:var(--font-heading);font-size:clamp(25px,3vw,34px);line-height:1.8}.companion-light{display:block;padding:0;border:0;background:none;cursor:pointer}.companion-light:focus-visible{outline:2px solid var(--gold);outline-offset:8px;border-radius:50%}.companion-light span{background:radial-gradient(ellipse at 50% 25%,#fffef4,#f5d79e88 35%,#f5d79e04 78%);box-shadow:0 0 85px #f5d79e33}.companion-talk{background:var(--gold);color:var(--ink);border:0;box-shadow:none;min-height:56px}.companion-motto{color:#bec4cf;font-family:var(--font-body);font-size:15px}.care-bubble{position:absolute;z-index:2;top:58px;left:50%;transform:translateX(-50%);width:min(440px,calc(100% - 24px));max-height:410px;overflow:auto;background:#1b2a43ed;border:1px solid #f5d79e30;color:var(--warm);box-shadow:none;backdrop-filter:blur(18px)}.care-options .btn{background:#ffffff08;color:var(--warm);border:1px solid #f5d79e44}.care-bubble .btn.plain{background:transparent;color:#e4d1ae}.care-memory-note{color:#bcc5d3}.companion-home:has(.care-bubble:not([hidden])){justify-content:center}.companion-home:has(.care-bubble:not([hidden])) .companion-light{width:180px;height:180px;margin-top:38px}.companion-home:has(.care-bubble:not([hidden])) .companion-light span{width:100px;height:140px;left:40px;top:20px}.companion-home:has(.care-bubble:not([hidden])) .companion-light i{top:100px}.companion-home:has(.care-bubble:not([hidden])) h2{margin:24px 0}.companion-home:has(.care-bubble:not([hidden])) .companion-motto{margin-top:30px}
/* 彼岸 owns recommendations and the dance floor. */
.app-shell[data-view=space],.app-shell[data-view=ballroom],.app-shell[data-view=dance]{background:var(--space);color:var(--warm)}.app-shell[data-view=space] .topbar,.app-shell[data-view=ballroom] .topbar,.app-shell[data-view=dance] .topbar{background:var(--space);color:var(--warm)}.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:#c5cedc}.island-heading h2,.app-shell[data-view=ballroom] .page-heading h2{color:var(--gold)}.island-heading>p,.app-shell[data-view=ballroom] .page-heading>.muted,.goal-caption{color:#bdc7d7}.island-card{background:transparent;border:0;box-shadow:none}.island-caption{color:var(--warm)}.island-caption p{color:#c6cfde}.island-note{color:#b9c4d4}.island-place{background:#1a2a42ec;color:#FDFBF7;border:1px solid #f5d79e30;box-shadow:none}.island-place span{color:#d5c2a1}.island-place:disabled{opacity:.6;cursor:default}.island-private-link a,.island-privacy{color:#bbc5d6;font-size:14px;line-height:1.8}.ballroom-entry{border:1px solid #f5d79e25;background:#ffffff05;box-shadow:none}.app-shell[data-view=ballroom] .social-goals a{background:#ffffff08;color:var(--warm);box-shadow:none}.app-shell[data-view=ballroom] .social-goals a[aria-current]{background:var(--gold);color:var(--ink)}.app-shell[data-view=ballroom] .segment-nav{background:#ffffff08}.app-shell[data-view=ballroom] .segment-nav a{color:#c6d0de}.app-shell[data-view=ballroom] .segment-nav a[aria-current]{background:#f5d79e18;color:var(--gold);box-shadow:none}.app-shell[data-view=ballroom] .card,.app-shell[data-view=dance] .card{color:var(--ink);background:var(--warm)}.ballroom{box-shadow:none;border:1px solid #f5d79e20}.dance-back{color:var(--gold)}
/* 回响 is the message room. No fake unread badges or invitations. */
.message-heading{padding:20px 0 28px}.message-heading h2{font-size:30px;line-height:1.7;margin:12px 0}.message-heading p{color:var(--ink-2)}.message-list{background:#fffefb;border-radius:24px;padding:8px 20px;box-shadow:0 6px 24px #0a112805}.message-row{display:flex;align-items:center;gap:16px;text-decoration:none;padding:22px 0;color:var(--ink)}.message-row+.message-row{border-top:1px solid #e9e4db77}.message-row .avatar{background:var(--space);color:var(--gold);border-radius:18px;width:54px;height:54px}.message-person{flex:1;min-width:0}.message-person strong{font-size:18px;display:block;overflow-wrap:anywhere}.message-person small{display:block;font-size:14px;color:var(--ink-2);line-height:1.8}.message-empty{text-align:center;padding:65px 20px}.message-empty>span{font-size:44px;color:#a78752}.message-empty h3{font-size:25px;margin:18px 0}.message-empty p{color:var(--ink-2);max-width:440px;margin:0 auto 24px}.message-footer{font-size:15px;padding:24px 0}
/* Latest splash: light plasma, then spoken greeting, slogan and scroll invitation. */
.welcome--ritual{font-family:var(--font-body)}.welcome--ritual h1,.welcome--ritual h2,.welcome--ritual h3,.welcome--ritual .welcome-brand{font-family:var(--font-heading)}.welcome--ritual button,.welcome--ritual a,.welcome--ritual p{font-family:var(--font-body)}.welcome--ritual .welcome-nav{background:#fafbfc;color:var(--ink)}.welcome--ritual .welcome-brand{color:var(--ink)}.welcome--ritual .welcome-brand small{color:#677281;font-family:var(--font-body)}.welcome--ritual .welcome-login{color:#725c36}.ritual-sound{color:#5d5269;background:transparent;border-color:#dadce5}.ritual-splash{background:#fafbfc}.ritual-aurora{background:radial-gradient(ellipse at 40% 40%,#8796fa0a,transparent 45%),radial-gradient(ellipse at 68% 50%,#e4a1ef0c,transparent 40%);filter:blur(26px)}.orb-heart{background:radial-gradient(circle at 32% 30%,#effaff,#9799faaa 32%,#ce80eaba 62%,#8ac9fa44 82%);box-shadow:0 0 55px #a092f33b,inset 0 0 28px #fff8;filter:blur(.5px);border-radius:44% 56% 48% 52%;animation:plasma-form 5s ease-in-out infinite}.orb-particle{background:#a38fee;box-shadow:0 0 8px #ad92ee}.ritual-wave{border-color:#b998ee66}.ritual-orb[data-phase=gathering] .orb-heart{animation:plasma-gather .8s ease-out both}.ritual-orb[data-phase=speaking] .orb-heart{animation:plasma-pulse 1.5s ease-in-out infinite,plasma-form 5s ease-in-out infinite}.ritual-voice{background:#ffffffe0;border:1px solid #e1deed;box-shadow:none}.ritual-caption{color:#86809566}.ritual-caption span.is-spoken{color:#4c435c;text-shadow:none}.ritual-voice button{color:#787083}.ritual-slogan{color:#b89a63;font-family:var(--font-heading);opacity:0;transform:translateY(8px);transition:opacity .6s,transform .6s}.ritual-slogan:has(.is-ready){opacity:1;transform:none}.ritual-scroll{color:#83796a;opacity:0;transform:translateY(8px);transition:opacity .6s,transform .6s}.ritual-scroll.is-ready{opacity:1;transform:none}.ritual-position{display:none}.ritual-farewell{padding:22px 30px;border-radius:24px;background:#ffffff08;border:1px solid #f5d79e22;max-width:480px;font-size:20px;line-height:1.85}.ritual-care,.ritual-plan-preview{box-shadow:none}.ritual-poem{font-family:var(--font-heading)}.ritual-care-reply{line-height:1.85}
@keyframes plasma-form{0%,100%{border-radius:44% 56% 48% 52%;transform:rotate(-4deg) scale(.98)}50%{border-radius:58% 42% 55% 45%;transform:rotate(5deg) scale(1.06)}}@keyframes plasma-gather{from{transform:scale(.6);opacity:.2;filter:blur(8px)}to{transform:scale(1);opacity:1;filter:blur(.5px)}}@keyframes plasma-pulse{50%{box-shadow:0 0 75px #b48efc70,inset 0 0 35px #fff9}}
@media(min-width:1000px){.companion-home{min-height:calc(100svh - 190px)}.care-bubble{top:100px;left:calc(50% + 270px);width:360px}.island-heading,.island-privacy,.island-private-link{max-width:780px;margin-inline:auto}.message-heading,.message-list,.message-footer,.message-empty{max-width:900px;margin-inline:auto}}
@media(max-width:480px){.message-heading h2{font-size:27px}.companion-top{gap:8px}.companion-top .eyebrow{font-size:12px}.companion-top .btn{font-size:13px;padding:8px}.care-bubble{top:58px;max-height:380px}.message-row{padding:18px 0}.profile-plans .row .row{width:100%;margin-top:10px}}
@media(prefers-reduced-motion:reduce){.orb-heart{animation:none!important}.ritual-slogan,.ritual-scroll{opacity:1;transform:none;transition:none}.companion-light span{animation:none}}

.care-bubble [data-care-error]:empty{display:none}.care-bubble .care-memory-note{margin:14px 0 0}.care-bubble .care-options{gap:10px}.care-bubble .care-options .btn{min-height:44px;padding:8px 10px;font-weight:400}.care-bubble>p:first-of-type{margin:10px 0 16px;font-size:18px}.care-bubble{padding:20px}

.app-shell[data-view=space] .eyebrow,.app-shell[data-view=ballroom] .eyebrow,.app-shell[data-view=dance] .eyebrow{color:var(--gold)}

@media(max-width:999px){.companion-home:has(.care-bubble:not([hidden])){justify-content:flex-start;padding-top:384px}.companion-home:has(.care-bubble:not([hidden])) .care-bubble{max-height:320px}.companion-home:has(.care-bubble:not([hidden])) .companion-light{width:120px;height:80px;margin:0}.companion-home:has(.care-bubble:not([hidden])) .companion-light span{width:70px;height:85px;left:25px;top:0}.companion-home:has(.care-bubble:not([hidden])) .companion-light i{top:55px}.companion-home:has(.care-bubble:not([hidden])) .companion-name{font-size:22px;margin-top:8px}.companion-home:has(.care-bubble:not([hidden])) h2{display:none}.companion-home:has(.care-bubble:not([hidden])) .companion-talk{margin-top:14px}.companion-home:has(.care-bubble:not([hidden])) .companion-motto{margin-top:16px}}
@media(max-width:999px) and (max-height:800px){.companion-home:has(.care-bubble:not([hidden])){padding-top:330px}.companion-home:has(.care-bubble:not([hidden])) .care-bubble{max-height:270px;top:50px}.companion-home:has(.care-bubble:not([hidden])) .companion-light{height:60px}.companion-home:has(.care-bubble:not([hidden])) .companion-light span{height:65px}.companion-home:has(.care-bubble:not([hidden])) .companion-name{font-size:20px;margin-top:4px}}

.app-shell h1,.app-shell h2,.app-shell h3{line-height:1.65}.echo-panel-header strong{line-height:1.65}.ritual-slogan{color:var(--gold);-webkit-text-stroke:.25px #ad8c56;text-shadow:0 0 1px #ad8c5622}

.plan-draft{max-width:960px;margin:24px auto}.plan-directions{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:24px 0}.plan-directions p{margin:0}.plan-directions a.btn{display:flex;align-items:center;justify-content:center;min-height:64px;text-decoration:none;padding:18px;font-weight:500}.plan-draft>p{max-width:680px}.plan-draft h2{font-size:30px}@media(max-width:480px){.plan-directions{grid-template-columns:1fr}.plan-draft{margin:12px auto}}

.message-requests{max-width:900px;margin:0 auto 32px}.message-request{padding:22px 0;border-bottom:1px solid #e6e1d8}.message-request p{margin:6px 0}.message-request small{color:var(--ink-2)}.message-request .request-plan{margin:14px 0;font-size:16px}.request-outgoing{margin-top:24px}.message-request .btn{min-height:48px}.message-heading [data-message-notice]:empty{display:none}@media(max-width:480px){.message-request .row.wrap .btn{flex:1}.message-requests h3,.message-list h3{font-size:22px}}

.message-preview{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-person{min-width:0;flex:1}.message-unread{background:#a03e39;color:#fff;border-radius:20px;min-width:28px;padding:3px 8px;text-align:center;font:500 14px/1.6 var(--font-body);flex:none}

/* =========================================================================
   此岸 · 旧版遗留规则中和（apple.css 采用新结构：companion-stage / comic-bubble）
   这里把本文件与 styles.css 中针对旧 DOM 的硬编码深底、旧光球形态、
   旧气泡定位一并重置，避免与新结构冲突（apple.css 仍可再覆盖）。
   ========================================================================= */
.companion-home{background:var(--ap-bg)!important}
.companion-home .companion-light{width:216px!important;height:216px!important;margin:0!important;display:flex!important;align-items:center;justify-content:center;padding:0!important;border:0;background:none}
/* 只重置旧版「椭圆糊团」几何与动效；球的底色圆（阿瑶=珍珠白 / 阿辰=深玻璃）
   由 characters.js 内联注入 + apple.css 定义，这里不能写 background/box-shadow:none。 */
.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;
  filter:none!important;animation:none!important}
.companion-home .companion-light b,.companion-home .companion-light i{display:none!important}
.companion-home .care-bubble{position:absolute!important;left:50%!important;top:calc(100% + 14px)!important;bottom:auto!important;
  transform:translateX(-50%)!important;width:min(92vw,400px)!important;max-height:min(48vh,360px)!important;overflow:auto!important}
.companion-home:has(.care-bubble:not([hidden])){justify-content:center!important;padding-top:64px!important}
.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}
.companion-home:has(.care-bubble:not([hidden])) h2{margin-top:16px!important}
@media(max-width:999px){
  .companion-home:has(.care-bubble:not([hidden])){padding-top:64px!important}
  .companion-home:has(.care-bubble:not([hidden])) h2{display:block!important}
}
@media(min-width:1000px){.care-bubble{top:auto!important;left:50%!important;width:min(92vw,400px)!important}}

