.hero.living-sanctuary{position:relative;height:auto;border-color:#8c9b7d66;--path-light:#cbb879;background:#12181c}
.hero.living-sanctuary:before,.hero.living-sanctuary:after{display:none}
.cultivation-scene{
 position:relative;aspect-ratio:4/5;width:min(100%,calc(min(86dvh,820px)*4/5));
 margin:0 auto;overflow:hidden;isolation:isolate;background:#12181c;
 --anchor-x:50%;--anchor-y:68%;--char-w:43%;--char-bottom:32.6%;--char-pad:100%;
 --weapon-left:71%;--weapon-bottom:39%;--weapon-w:18.5%;--weapon-rot:11deg;
 --shadow-cw:13%;--shadow-ch:2.1%;--shadow-sw:30%;--shadow-sh:6.2%;--breath-s:5.2s;
}
.cultivation-scene .scene-stage{position:absolute;inset:0;z-index:1;pointer-events:none}
.cultivation-scene .layer{position:absolute;pointer-events:none}
.cultivation-scene .environment{inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--env-pos,50% 50%);z-index:0;filter:saturate(.9) brightness(.92)}
.cultivation-scene .sky,.cultivation-scene .far,.cultivation-scene .altar{inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--env-pos,50% 50%);opacity:0}
.cultivation-scene .sky{z-index:0;filter:saturate(.85) brightness(.78)}
.cultivation-scene .far{z-index:1}
.cultivation-scene .altar{z-index:2}
.cultivation-scene .array-plate{z-index:3;left:var(--anchor-x);top:var(--anchor-y);width:var(--ground-w,87.5%);transform:translate(-50%,-50%) scaleY(var(--ground-flat,.30));mix-blend-mode:screen;opacity:.24;pointer-events:none}
.cultivation-scene .ward-plate{z-index:5;left:var(--anchor-x);top:var(--ward-y,20.5%);width:var(--ward-w,88.4%);transform:translate(-50%,-50%) scaleY(var(--ward-flat,.27));mix-blend-mode:screen;opacity:0;pointer-events:none;transition:opacity .7s}
.cultivation-scene .dawn{inset:0;z-index:2;opacity:var(--dawn,0);mix-blend-mode:screen;background:radial-gradient(ellipse 42% 65% at 60% 5%,#ffe3a285,transparent 80%),linear-gradient(120deg,transparent 20%,#ffe5aa30 47%,transparent 62%);transition:opacity 1.2s;pointer-events:none}
.cultivation-scene .fore{left:0;right:0;bottom:0;height:38%;width:100%;object-fit:cover;object-position:50% 100%;z-index:8;opacity:0;pointer-events:none;-webkit-mask-image:linear-gradient(to top, #000 55%, transparent);mask-image:linear-gradient(to top, #000 55%, transparent)}
.cultivation-scene[data-pack="altar"] .environment{opacity:1}
.cultivation-scene[data-pack="altar"] .sky,.cultivation-scene[data-pack="altar"] .far,.cultivation-scene[data-pack="altar"] .altar{display:none}
.cultivation-scene[data-pack="altar"] .array-plate{opacity:.7}
.cultivation-scene[data-state="minor"] .array-plate,.cultivation-scene[data-state="cultivate"] .array-plate{opacity:.7}
.cultivation-scene[data-state="major"] .ward-plate{opacity:calc(var(--ward-lit,0) * .84)}
.cultivation-scene[data-state="major"] .fore{opacity:.55}
.cultivation-scene[data-state="major"] .sky{filter:saturate(.82) brightness(.88)}
.cultivation-scene[data-state="major"] .far{filter:saturate(.78) brightness(.92)}
.cultivation-scene[data-state="major"][data-wave="2"] .fore{transform:translateY(-1.2%)}
.cultivation-scene[data-state="major"][data-wave="3"] .fore{transform:translateY(-2.2%) scale(1.03);opacity:.7}
.cultivation-scene[data-state="major"][data-wave="2"] .ward-plate{filter:brightness(1.05) contrast(1.1)}
.cultivation-scene[data-state="major"][data-wave="3"] .ward-plate{filter:brightness(1.2) contrast(1.15)}
.cultivation-scene[data-state="success"] .sky{filter:none}
.cultivation-scene[data-state="success"] .far{filter:saturate(.9) brightness(1.08) sepia(.08)}
.cultivation-scene[data-state="success"] .storm{opacity:0}
.cultivation-scene[data-state="success"] .ward-plate{opacity:0}
.cultivation-scene[data-state="success"] .array-plate{opacity:.95}
.cultivation-scene[data-state="success"] .fore{opacity:.22}
.cultivation-scene[data-state="failure"] .sky,.cultivation-scene[data-state="failure"] .far{filter:grayscale(.45) brightness(.58) saturate(.45)}
.cultivation-scene[data-state="failure"] .ward-plate{opacity:.22;filter:grayscale(.45) brightness(.55) contrast(1.2)}
.cultivation-scene[data-state="failure"] .array-plate{opacity:.22;filter:grayscale(.4) brightness(.7)}
.cultivation-scene[data-state="failure"] .fore{opacity:.62}
.cultivation-scene[data-state="failure"] .storm{opacity:.55}
.cultivation-scene .storm{inset:0;z-index:1;opacity:0;transition:opacity 1.1s;pointer-events:none;background:
 radial-gradient(ellipse 55% 42% at 8% 6%,#070a14aa 0 42%,transparent 74%),
 radial-gradient(ellipse 55% 42% at 92% 6%,#070a14aa 0 42%,transparent 74%),
 linear-gradient(180deg,#05081466 0%,transparent 18%)}
.cultivation-scene .shadow{z-index:2;left:var(--anchor-x);top:var(--anchor-y);transform:translate(-50%,calc(-50% + var(--hit-y,0px)));border-radius:50%}
.cultivation-scene .shadow-soft{width:var(--shadow-sw);height:var(--shadow-sh);background:radial-gradient(ellipse,#07101855 0 38%,transparent 74%)}
.cultivation-scene .shadow-contact{width:var(--shadow-cw);height:var(--shadow-ch);background:radial-gradient(ellipse,#05080c99 0 28%,transparent 70%)}
.cultivation-scene .fx-back{z-index:3;inset:0;width:100%;height:100%}
.cultivation-scene .weapon{z-index:5;left:var(--weapon-left);bottom:var(--weapon-bottom);width:var(--weapon-w);transform:translateX(-50%) rotate(var(--weapon-rot));transform-origin:50% 82%}
.cultivation-scene .weapon img{display:block;width:100%;height:auto;filter:var(--weapon-filter)}
.cultivation-scene .character{z-index:6;left:var(--char-x,var(--anchor-x));bottom:var(--char-bottom);width:var(--char-w);height:var(--char-h,0px);padding:0;transform:translateX(-50%) translateY(var(--hit-y,0px));transform-origin:50% 100%}
.cultivation-scene .character img{display:block;width:100%;height:auto;position:absolute;left:0;bottom:0;opacity:0;transition:opacity 200ms ease;filter:var(--char-filter)}
.cultivation-scene .character img.is-on{opacity:1}
.cultivation-scene .character canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.cultivation-scene .fx-front{z-index:8;inset:0;width:100%;height:100%}
.cultivation-scene.pose-cut .character img{transition:none}
.cultivation-scene .mist{z-index:8;inset:90% -10% -8%;background:radial-gradient(ellipse at 48% 100%,#9bb4b018,transparent 62%);opacity:.22}
.cultivation-scene .labels{z-index:10;pointer-events:none}
.cultivation-scene .hero-top,.cultivation-scene .scene-tools,.cultivation-scene .hero-bottom,.cultivation-scene .scene-status,.cultivation-scene .ascent-eyebrow,.cultivation-scene .close-button{pointer-events:auto;z-index:12}
.cultivation-scene[data-state="idle"] .mist{opacity:.28}
.cultivation-scene[data-state="major"] .storm{opacity:1}
.cultivation-scene[data-state="major"] .environment{filter:saturate(.72) brightness(.82)}
/* Contact remains fixed; breath and ascension light animate around the actor. */
.cultivation-scene.reduced-fx .fore{transform:none!important}
.cultivation-scene[data-state="success"] .environment{filter:saturate(.92) brightness(1.02) sepia(.12)}
.cultivation-scene[data-state="failure"] .environment{filter:grayscale(.35) brightness(.72) saturate(.55)}
.cultivation-scene[data-state="failure"] .storm{opacity:.28}
.cultivation-scene.animate[data-pose="sit"][data-state="cultivate"][data-skin="dark"] .character img.is-on,
.cultivation-scene.animate[data-pose="sit"][data-state="minor"][data-skin="dark"] .character img.is-on{animation:cave-breath-dark var(--breath-s) ease-in-out infinite;opacity:1}
.cultivation-scene.animate[data-pose="sit"][data-state="cultivate"][data-skin="jade"] .character img.is-on,
.cultivation-scene.animate[data-pose="sit"][data-state="minor"][data-skin="jade"] .character img.is-on{animation:cave-breath-jade var(--breath-s) ease-in-out infinite;opacity:1}
.cultivation-scene.animate .weapon:not(.no-weapon){animation:cave-weapon 7s ease-in-out infinite}
.cultivation-scene.animate[data-pose="sit"] .shadow-soft{animation:cave-shadow 5.2s ease-in-out infinite}
.cultivation-scene .no-weapon{display:none}
.living-sanctuary .hero-top{position:absolute;left:20px;top:17px;font-size:10px;letter-spacing:2px}
.scene-path{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 0;color:var(--path-light)}
.scene-path b{font:17px var(--serif);letter-spacing:2px;color:#e2dec6}
.scene-path small{font-size:9px;letter-spacing:1px;color:#b8c2ae}
.scene-tools{position:absolute;right:14px;top:16px;display:flex;gap:6px;flex-direction:column}
.scene-tools button{font-size:11px;letter-spacing:1px;color:#d5d2c4;border:1px solid #c8ad7940;background:#0b1116cc;min-height:44px;padding:8px 10px}
.scene-tools button[aria-pressed=true]{color:#cbb879;border-color:#cbb87977}
.living-sanctuary .hero-bottom{position:absolute;bottom:0;left:0;right:0;padding:40px 24px 14px;background:linear-gradient(180deg,transparent 0%,#0b101688 70%,#0b1016d8 100%);text-shadow:0 2px 14px #000}
.living-sanctuary .hero-bottom h1{font-size:28px;letter-spacing:6px;margin:4px 0}
.scene-status{position:absolute;left:20px;top:67px;color:#9baea1;font-size:9px;letter-spacing:2px;text-shadow:0 2px 14px #000}
.scene-status:before{content:'◌';color:var(--path-light);margin-right:7px}
.living-sanctuary .hero-subtitle{font-size:10px;color:#9aa999}
.home-afterword{margin-top:24px}.home-afterword .chapter-banner{margin-bottom:12px}

dialog:has(.tribulation-art){
 max-width:min(720px,calc(100vw - 24px),calc((92dvh - 260px)*0.8 + 28px));
 width:min(720px,calc(100vw - 24px),calc((92dvh - 260px)*0.8 + 28px));
 max-height:92dvh;
 height:92dvh;
 overflow:hidden;
}
dialog:has(.tribulation-art) #modal-content{height:100%;max-height:92dvh;overflow:hidden}
.motion-dialog{padding:0;text-align:center;background:#101b20}
.tribulation-dialog,.ascension-wrap{
 display:flex;flex-direction:column;max-height:92dvh;overflow:hidden;min-height:0
}
.tribulation-dialog{height:100%}
.tribulation-dialog [data-lab-seek]{flex:0 0 auto}
.tribulation-dialog .scene-chrome{flex:1 1 auto;min-height:0;overflow:auto}
.ascension-art,.tribulation-art{position:relative;isolation:isolate;overflow:hidden;background:#101b20;flex:0 0 auto;display:flex;justify-content:center}
.ascension-art{width:min(100%,calc(min(52dvh,420px)*4/5));aspect-ratio:4/5;height:auto;margin:0 auto}
.ascension-art .cultivation-scene{width:100%;height:100%;aspect-ratio:unset}
.tribulation-dialog .tribulation-art{
 aspect-ratio:4/5;
 width:min(100%,calc((92dvh - 260px)*0.8));
 height:auto;
 max-width:100%;
 margin:0 auto;
 flex:0 0 auto;
}
.tribulation-art .cultivation-scene,.cultivation-scene.wide-stage{
 width:100%;height:100%;aspect-ratio:unset;max-height:none;
}
.ascension-art .close-button,.tribulation-art .close-button{position:absolute;right:12px;top:12px;z-index:14;background:#0b151a66;border:1px solid #82927655;font-size:22px;min-height:44px;min-width:44px}
.ascent-eyebrow{position:absolute;left:0;right:0;top:18px;font:11px var(--serif);letter-spacing:4px;color:#cbd4b1;z-index:14;text-shadow:0 2px 12px #000}
.scene-chrome{flex:0 0 auto;padding:10px 16px calc(20px + env(safe-area-inset-bottom,0px))}
.motion-dialog .modal-label{font-size:10px;letter-spacing:3px;color:#bca878;margin:4px 0 6px}
.motion-dialog h2{font:500 22px var(--serif);letter-spacing:3px;margin-bottom:6px}
.motion-dialog p{font-size:11px;line-height:1.7;color:#9ead9f;padding:0 16px}
.motion-dialog .modal-stats{margin:18px 12px;font-size:10px}
.motion-dialog .button.primary{width:calc(100% - 32px);max-width:420px;margin:12px 16px 0;min-height:44px}
.motion-option{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:16px 0;border-bottom:1px solid var(--line);font-size:12px}
.motion-option .small-button{min-height:44px}
.thunder-waves{display:flex;justify-content:center;gap:8px;margin:6px 0}
.thunder-waves span{min-width:64px;padding:4px 8px;border:1px solid #6d7c7044;font-size:10px;letter-spacing:1px;color:#8a988c}
.thunder-waves span.struck{color:#ffd278;border-color:#ff5c2488;background:#3a1810aa}
.tribulation-dialog.is-success .scene-chrome{background:linear-gradient(180deg,#1a1810,#101619)}
.tribulation-dialog.is-failure .scene-chrome{background:linear-gradient(180deg,#16141a,#0e1214)}
.tribulation-dialog.is-failure .modal-label,.tribulation-dialog.is-failure h2{color:#c9b8a4}
.tribulation-dialog.is-success .modal-label{color:#ead5a3}
.tribulation-dialog.is-settled .thunder-waves,
.tribulation-dialog.is-settled [data-skip-tribulation]{display:none}
.tribulation-dialog.is-settled .scene-chrome{padding-top:4px;overflow:auto;min-height:0;flex:1 1 auto}
.tribulation-dialog.is-settled .tribulation-art{
 width:min(100%,calc((92dvh - 260px)*0.8));
 max-height:none;
}
#tribulation-status{margin:4px 0 0;font-size:11px;letter-spacing:2px;color:#b7c4b0}
#break-result{padding-bottom:8px}
#break-result h2{font-size:22px}
#break-result .button.primary{position:sticky;bottom:calc(6px + env(safe-area-inset-bottom,0px));z-index:6}

@keyframes cave-breath-dark{0%,100%{opacity:1;filter:var(--char-filter)}50%{opacity:1;filter:var(--char-filter) brightness(1.04)}}
@keyframes cave-breath-jade{0%,100%{opacity:1;filter:var(--char-filter)}50%{opacity:1;filter:var(--char-filter) contrast(1.04)}}
@keyframes cave-weapon{50%{transform:translateX(-50%) translateY(-1.1%) rotate(var(--weapon-rot))}}
@keyframes cave-shadow{50%{opacity:.78;transform:translate(-50%,-50%) scaleX(1.05)}}
@keyframes cave-float{50%{transform:translateX(-50%) translateY(calc(var(--hit-y,0px) - 1.6%))}}
@media(max-width:640px),(max-height:500px) and (max-width:960px){
 html[data-page="home"] .cultivation-scene{
  width:min(100%,calc((100dvh - var(--nav-reserve,72px) - 18rem) * 4 / 5));
 }
}
@media(max-width:640px){
 .cultivation-scene{width:100%}
 html[data-page="home"] .cultivation-scene{width:min(100%,calc((100dvh - var(--nav-reserve,72px) - 18rem) * 4 / 5))}
 .living-sanctuary .hero-bottom{padding:40px 16px 14px}
 .living-sanctuary .hero-bottom h1{font-size:24px;letter-spacing:4px}
 .living-sanctuary .hero-bottom h1 small{font-size:14px}
 .living-sanctuary .hero-top{left:17px;top:12px}
 .scene-path b{font-size:15px}
 .scene-tools{right:10px;top:12px}
 .scene-status{left:17px;top:62px;font-size:8px;letter-spacing:1px}
 .scene-path small{font-size:8px}
 .motion-dialog h2{font-size:20px}
 .home-afterword{margin-top:20px}
 dialog:has(.tribulation-art){max-width:calc(100vw - 16px);width:calc(100vw - 16px)}
 dialog:has(.tribulation-art){width:calc(100vw - 16px);max-width:calc(100vw - 16px)}
 .tribulation-art{aspect-ratio:4/5;width:min(100%,calc((92dvh - 260px)*0.8));flex:0 0 auto}
 .tribulation-art .cultivation-scene,.cultivation-scene.wide-stage{width:100%;height:100%}
}
@media(max-height:700px){
 .ascent-eyebrow{top:10px;letter-spacing:2px;font-size:10px}
 .motion-dialog h2{font-size:18px;margin-bottom:4px}
 #break-result p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
}
@media(orientation:landscape) and (max-height:500px){
 html[data-page="home"] .cultivation-scene{
  width:auto;max-width:100%;
  height:min(36dvh,calc(100dvh - var(--nav-reserve,56px) - 11rem));
  aspect-ratio:4/5;
 }
 dialog:has(.tribulation-art){
  max-height:96dvh;
  width:min(96vw,720px);
  max-width:calc(100vw - 16px);
 }
 .tribulation-dialog .tribulation-art{aspect-ratio:4/5;height:min(48dvh,calc(100dvh - 12rem));width:auto;max-width:100%}
 .tribulation-dialog.is-settled .tribulation-art{height:min(48dvh,calc(100dvh - 12rem));max-height:none;width:auto}
 .tribulation-dialog.is-settled .scene-chrome{flex:1 1 auto;overflow:auto;min-height:0}
 .scene-chrome{padding:6px 12px calc(8px + env(safe-area-inset-bottom,0px))}
 #break-result .button.primary{position:sticky;bottom:calc(6px + env(safe-area-inset-bottom,0px));z-index:6}
}
@media(prefers-reduced-motion:reduce){
 .cultivation-scene *{animation:none!important}
 .cultivation-scene .scene-stage{transform:none!important}
}
