/* Scoped v0.2 additions; original scene effects keep their own selectors. */
.ending-stats { margin:18px 0 4px; text-align:left; color:inherit; }
.ending-stats>summary { cursor:pointer; font-family:var(--f-body); font-size:14px; letter-spacing:.12em; }
.ending-stats ul { list-style:none; margin:16px 0 0 7px; padding:0 0 0 18px; border-left:1px solid #80889866; }
.ending-stats li { position:relative; padding:0 0 17px; }
.ending-stats li::before { content:''; position:absolute; left:-18px; top:9px; width:12px; border-top:1px solid #80889888; }
.ending-stats__name { display:block; font-size:14px; }
.ending-stats small { display:block; margin-top:5px; font-size:12px; color:#b8bec9; }
.ending-stats b { font-weight:400; font-variant-numeric:tabular-nums; }
.ending-stats__notice { font-size:11px; color:#aab0bb; }
.ending-stats[open] ul { animation:text-in .35s ease both; }
.tab[data-tab=endings] .tab__body { left:var(--stats-left,auto); right:auto; width:min(290px,80vw); max-height:60vh; overflow:auto; }
.tab[data-tab=endings] .ending-stats { margin:0; }
.assim-melting { transform-origin:50% 0; pointer-events:none!important; animation:assim-map-melt 8s var(--drip-delay,0s) forwards!important; }
@keyframes assim-map-melt { 0% {filter:blur(0);} 40% {transform:translateY(10px) scale(.88,1.7);filter:blur(1px);opacity:.7;} 85% {transform:translateY(100px) scale(.45,3.5);filter:blur(4px);opacity:.2;} 100% {transform:translateY(160px) scale(.2,4);filter:blur(7px);opacity:0;visibility:hidden;} }
.full-assim-map .tiles { isolation:isolate; }
.full-assim-map .tile--flower { position:relative; }
.assim-flower-eye { position:absolute; inset:0; z-index:1; background-size:190% auto; background-position:50% 62%; mask-image:radial-gradient(ellipse 68% 55%,#000 40%,transparent 95%); animation:assim-blink var(--blink-time) infinite; transform-origin:center; pointer-events:none; }
@keyframes assim-blink { 0%,78%,100% {transform:scaleY(1);} 84% {transform:scaleY(.05);} 91% {transform:scaleY(1);} }
.full-assim-map::after { content:''; position:fixed; inset:0; z-index:95; pointer-events:none; opacity:0; background:linear-gradient(transparent 24%,#002fa775 24.5%,transparent 26%,transparent 58%,#315cff66 58.5%,transparent 61%); box-shadow:inset 0 0 120px #002fa740; animation:assim-blue-fault 5.7s infinite; }
@keyframes assim-blue-fault { 0%,90%,96%,100% {opacity:0;transform:none;} 92%,94% {opacity:.65;transform:translateX(5px);} }
@media(prefers-reduced-motion:reduce) { .assim-melting {animation:none!important;visibility:hidden;} .assim-flower-eye {animation:none;} .full-assim-map::after {animation:none;} .ending-stats[open] ul {animation:none;} }
.v02-downflow { position:fixed; inset:0; width:100%; height:100%; z-index:75; pointer-events:none; }
.v02-hymn-noise { position:absolute; inset:0; width:100%; height:100%; z-index:7; opacity:.15; mix-blend-mode:soft-light; pointer-events:none; }
.cover--bliss .stage { position:absolute; inset:0; width:100%; height:100%; aspect-ratio:auto; }
@media (max-width:900px) { .cover--bliss .cover__right { min-height:100svh; } }
@media (min-width:861px) {
  .grounds__welcome { position:relative; align-self:stretch; min-width:0; }
  .map-panel-dock { position:relative; flex:1; margin-top:32px; display:flex; align-items:flex-end; justify-content:flex-end; }
  .map-panel-dock .map-panel { position:relative; right:auto; bottom:auto; --pw:100%; width:100%; max-width:520px; min-width:0; overflow:visible; }
  .map-panel-dock .map-panel__fig { flex-shrink:0; }
  .map-panel-dock .map-panel__fig img { margin:0; width:100%; max-width:100%; max-height:none; }
  .map-panel-dock .map-panel__text, .map-panel-dock .map-panel__acts, .map-panel-dock .map-panel__day, .map-panel-dock .map-panel__message { padding-left:0; padding-right:0; }
  .map-panel-dock .map-panel__x { position:absolute; top:0; right:0; z-index:3; }
}
.v02-map-status { position:fixed; right:28px; bottom:64px; max-width:min(290px,70vw); font-size:12px; line-height:1.7; color:#c0c5d0; pointer-events:none; z-index:15; text-align:right; }
.v02-soft { animation:v02-soft 6s ease-in-out infinite alternate; }
@keyframes v02-soft { to { filter:blur(1.4px); opacity:.72; } }
.v02-liquid { min-width:100px; min-height:44px; overflow:visible; }
.v02-liquid .v02-chat-text { display:inline-block; transform-origin:top; animation:v02-flow 7s .4s both; }
.v02-chat-text .scr__c { color:inherit; }
.v02-chat-text .scr__c.is-scr { color:var(--klein-glow); }
.v02-ink-trails { pointer-events:none; position:absolute; top:80%; left:15%; width:70%; height:10px; background:repeating-linear-gradient(90deg,transparent 0 9%,#002fa7 10% 11%,transparent 12% 23%); transform-origin:top; animation:v02-trails 9s .4s forwards; opacity:.8; z-index:0; }
.v02-ink-cross { background:none; color:#002fa7; z-index:9; }.v02-ink-cross svg { display:block; width:100%; height:100%; }
.bub.v02-liquid:nth-child(2) { z-index:2; }
@keyframes v02-trails { to { height:65vh; opacity:.25; filter:blur(1.2px); } }
@keyframes v02-flow { to { transform:scaleY(2.5) translateY(12px); filter:blur(.4px); opacity:.65; } }
.v02-girl-head { position:absolute; width:31%; height:25%; top:28%; left:34%; border:0; background:transparent; cursor:default; }
.v02-girl-head:focus-visible { outline:1px dotted #bbc3d2; }
.v02-object-overlay { position:fixed; inset:0; z-index:500; display:grid; place-items:center; padding:25px; overflow:auto; background:#040609bd; }
.v02-object-backdrop { position:fixed; inset:0; background:transparent; border:0; }
.v02-object-wrap { position:relative; width:min(600px,100%); display:flex; flex-direction:column; align-items:center; gap:20px; color:#eee; margin:auto; }
.v02-object-wrap .lift__card { position:relative; width:100%; aspect-ratio:1000/630; }
.v02-object-close { position:relative; }
.v02-object-overlay .ev-btn,.v02-review .ev-btn { color:#e9ebf0; background:#151820; border-color:#626777; }
.v02-object-overlay .ev-btn:hover,.v02-review .ev-btn:hover { background:#002fa7; }
.v02-card-controls .ev-btn { color:#222936; background:#e9ecf2; border-color:#788298; }
.v02-object-overlay .v02-card-controls .ev-btn { color:#eee; background:#151820; }
.v02-register { width:min(490px,100%); aspect-ratio:1052/1495; position:relative; background:url('../assets/img/v02/ref-c.webp') center/100% 100%; color:#242324; font-family:'Caveat',cursive; font-size:clamp(12px,2.5vw,21px); outline-offset:5px; }
.v02-register-en,.v02-register-zh { position:absolute; inset:14% 6% 8%; transition:opacity .65s; }
.v02-register h3 { text-align:center; font-weight:400; letter-spacing:.07em; margin-bottom:18%; }
.v02-register table { border-collapse:collapse; width:100%; text-align:left; font-weight:400; }
.v02-register th { font-size:.65em; font-weight:400; padding-bottom:1.7em; }
.v02-register td { padding:1.1em .2em; }
.v02-register-zh { opacity:0; font-family:var(--font-zh,serif); font-size:.86em; }
.v02-zh .v02-register-en { opacity:0; }.v02-zh .v02-register-zh { opacity:1; }
.v02-card-en,.v02-card-zh { position:absolute; inset:0; transition:opacity .6s; }
.v02-card-zh { opacity:0; pointer-events:none; }.v02-zh .v02-card-en { opacity:0; }.v02-zh .v02-card-zh { opacity:1; }
.v02-card-controls { display:flex; justify-content:center; gap:12px; position:relative; margin-top:18px; z-index:3; }
.v02-card-controls button { font-size:12px; }
.v02-worn { filter:sepia(.1) contrast(.88); }
.v02-worn .idc::after { content:''; position:absolute; inset:0; background:repeating-linear-gradient(157deg,transparent 0 26px,#aba6a035 27px,transparent 28px 57px); pointer-events:none; }
.v02-worn .idc__backtext { white-space:pre-line; font-size:2.45cqw; }
.v02-worn .idc__backtext span { display:inline-block; transform-origin:50% 0; }
.v02-worn.v02-zh .v02-card-zh .idc__backtext span { animation:dining-melt var(--dur) var(--delay) both; pointer-events:none; }
.v02-worn .fc__back .idc__backtext { z-index:3; }
.v02-wear-label { font-size:12px; opacity:.7; margin:0; }
.v02-case-item { position:absolute; border:0; padding:0; background:transparent; aspect-ratio:1052/1495; width:9%; left:57%; top:43%; transform:rotate(-8deg); cursor:pointer; z-index:16; }
.v02-case-item img { width:100%; }.v02-case-item>span { position:absolute; top:22%; left:12%; font-size:clamp(4px,.65vw,10px); color:#333; }
.v02-case-item--oldId { left:34%; top:77%; width:14%; aspect-ratio:1000/630; transform:rotate(5deg); filter:sepia(.1) contrast(.9); font-size:clamp(5px,1vw,12px); }
.v02-return { position:fixed; top:24px; left:50%; transform:translateX(-50%); color:#ddd; background:#101217c9; padding:8px 18px; font-size:14px; z-index:10; }
.party.v02-open .party__hint { opacity:1; transform:none; }
.party .party__hint { left:0; bottom:calc(100% + 10px); margin:0; width:340px; max-width:calc(100vw - 48px); box-sizing:border-box; white-space:pre-line; writing-mode:horizontal-tb; font-size:14px; line-height:1.8; letter-spacing:.04em; text-align:left; }
/* Chinese needs its own reading rhythm; keep the original card and flip effect. */
.v02-card-zh .idc__backtext { width:46%; top:10%; font-family:var(--f-body); font-size:3.5cqw; font-weight:400; line-height:1.65; letter-spacing:.025em; }
.v02-prayer-card .v02-card-zh .idc__backtext { width:44%; top:12%; font-family:'Cormorant Garamond',serif; font-size:2.02cqw; font-weight:600; line-height:1.3; letter-spacing:normal; }
.v02-worn .v02-card-zh .idc__backtext { font-size:2.45cqw; }
.v02-card-zh .idc__sign { top:63%; width:46%; display:flex; flex-direction:column; gap:1cqw; }
.v02-card-zh .idc__sig { position:static; display:block; font-family:var(--f-body); font-size:3.4cqw; line-height:1.3; }
.v02-card-zh .idc__sign small { margin:0; font-size:2.3cqw; line-height:1.3; }
.v02-card-zh .idc__order { top:84%; font-family:var(--f-body); font-size:2.5cqw; line-height:1.5; }
.v02-flash { animation:v02-flash .4s 1; } @keyframes v02-flash { 35% { opacity:.2; text-shadow:2px 0 #315ccb; } }
.v02-bilingual { display:grid!important; }
.v02-bilingual>.v02-en,.v02-bilingual>.v02-cn { grid-area:1/1; }
.v02-bilingual>.v02-cn { opacity:0; visibility:hidden; }
.v02-credits-zh .v02-en { opacity:0; visibility:hidden; }.v02-credits-zh .v02-cn { opacity:1; visibility:visible; }
.cr__infinity { font-size:clamp(14px,2vw,20px); max-width:650px; margin:24px auto 70px; line-height:1.8; }
.v02-end-review { position:absolute; top:60%; left:50%; transform:translateX(-50%); width:min(650px,88vw); max-height:37vh; overflow:auto; z-index:5; text-align:center; background:#090a0dcc; padding:12px; }
.v02-end-review summary { cursor:pointer; font-size:18px; list-style:none; }.v02-end-review summary small { display:block; font-size:11px; letter-spacing:.15em; opacity:.65; }
.v02-review { text-align:left; }.v02-review pre { white-space:pre-wrap; overflow-wrap:anywhere; font-family:inherit; font-size:12px; line-height:1.9; }
.v02-review textarea { width:100%; min-height:150px; color:#eee; background:#121318; }
.v02-copy-status { font-size:11px; }.tab[data-tab=review] .tab__body { top:auto; bottom:calc(100% + 6px); max-height:50vh; overflow:auto; width:min(330px,85vw); }
.tab[data-tab=review] .tab__body::before { top:auto; bottom:-8px; }
.cr__role b .v02-bilingual,.cr__role b .v02-bilingual>span { font:inherit; color:inherit; text-transform:none; text-align:inherit; padding:0; letter-spacing:inherit; }
.cr__role>span>.v02-bilingual,.cr__role>span>.v02-bilingual>span { padding:0; }
.credits__roll .cr__infinity { margin:24px auto 70px; }
.v02-shake { animation:v02-shake .7s; } @keyframes v02-shake { 25%,75% { transform:translateX(2px); } 50% { transform:translateX(-2px); } }
@media (max-width:600px) { .v02-object-overlay { padding:18px; }.v02-card-controls { margin-top:10px; }.v02-map-status { right:18px; bottom:58px; max-width:230px; font-size:10px; }.v02-register th { font-size:.75em; }.v02-register td { padding:1em .1em; }.v02-end-review { top:58%; }.tab[data-tab=review] .tab__body { max-height:38vh; } }
@media (pointer:coarse) { .party:not(.v02-open) .party__hint { opacity:0; transform:translateY(4px); } }
@media (prefers-reduced-motion:reduce) { .v02-soft,.v02-liquid .v02-chat-text,.v02-ink-trails,.v02-worn.v02-zh .v02-card-zh .idc__backtext span,.v02-flash,.v02-shake { animation:none; }.v02-bilingual>* { transition:none; } }
