.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 .storm{inset:0;z-index:1;opacity:0;transition:opacity 1.1s;background:
 radial-gradient(ellipse 130% 80% at 50% -8%,#070a14d4 0 28%,transparent 70%),
 linear-gradient(180deg,#050814cc 0%,#05081455 42%,#05081422 72%,transparent 100%)}
.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:50%;bottom:var(--char-bottom);width:var(--char-w);height:0;padding-bottom:var(--char-pad);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:7;inset:0;width:100%;height:100%}
.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(.58) brightness(.68)}
.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(960px,calc(100vw - 24px),calc((92dvh - 168px)*1.6 + 4px));
 width:min(960px,calc(100vw - 24px),calc((92dvh - 168px)*1.6 + 4px));
 max-height:92dvh;
 overflow:hidden;
}
dialog:has(.tribulation-art) #modal-content{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
}
.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-art{width:100%;height:auto;max-width:100%}
.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}
#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}

@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)}}
@media(max-width:640px){
 .cultivation-scene{width:100%}
 .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 - 176px)*0.8))}
 .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(prefers-reduced-motion:reduce){
 .cultivation-scene *{animation:none!important}
 .cultivation-scene .scene-stage{transform:none!important}
}
