:root{color-scheme:dark;--cream:#fff0e5;--gold:#e7c2aa;--line:#ebc1ad88}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:#0d0609;color:var(--cream);font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
#nl-badge-frame{display:none!important}
button:focus-visible{outline:2px solid #ffe2ce;outline-offset:3px}
[hidden]{display:none!important}
.shell{min-height:100dvh;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 35%,#38161e,#10070b 70%)}
.player{position:relative;width:min(100%,480px);height:100dvh;min-height:580px;max-height:960px;overflow:hidden;isolation:isolate;background:#19080d;box-shadow:0 26px 90px #0009}
.scene,.scene-image,.scene-light,.shade,.vignette,.face-shot,.face-room,.face-portrait,.angle-shot,.new-shot,.couple-shot,.arm-link-shot,.hand-abs-shot,.hand-abs-base,.sleep-shot,.ending-video,.shot-blur{position:absolute;inset:0}
.scene{overflow:hidden;background:#1a090d}
.scene-image{width:100%;height:100%;object-fit:cover;object-position:center;transform-origin:55% 38%;transform:scale(1.025);transition:transform .55s ease,filter .65s ease;filter:saturate(.94)}
.player.is-moving .scene-image{animation:none}
.player[data-phase="beat"] .scene-image,.player[data-shot="three-quarter"] .angle-three-quarter,.player[data-shot="profile"] .angle-profile,.player[data-shot="eyes-direct"] .eyes-direct-shot,.player[data-shot="gentle-gaze"] .gentle-gaze-shot,.player[data-shot="door-coat"] .door-coat-shot,.player[data-shot="door-coat-close"] .door-coat-shot,.player[data-shot="doorway-lookback"] .doorway-lookback-shot,.player[data-shot="doorway-lookback-close"] .doorway-lookback-shot,.player[data-shot="amusement"] .amusement-shot,.player[data-shot="together"] .couple-shot,.player[data-shot="arm-link"] .arm-link-base,.player[data-shot="hand-abs"] .hand-abs-base,.player[data-shot="sleep"] .sleep-shot{animation:single-source-breathe 6.4s ease-in-out infinite}
.player[data-shot="seat"] .scene-image{transform-origin:53% 38%;transform:scale(1.15) translate(-1%,1%)}
.player[data-shot="foot"] .scene-image{transform-origin:69% 79%;transform:scale(1.22) translate(-1%,-1%)}
.player[data-shot="near"] .scene-image{transform-origin:57% 32%;transform:scale(1.28) translate(-1%,3%)}
.player[data-shot="bed"] .scene-image{transform-origin:50% 70%;transform:scale(1.07) translate(1%,-1%)}
.player[data-shot="close"] .scene-image{transform:scale(1.19) translate(-1%,2%)}
.face-shot{opacity:0;filter:blur(13px);transform:scale(1.07);transition:opacity .55s ease,filter .55s ease,transform .65s ease;pointer-events:none}
.face-room{background:#210a11 url("assets/red-room-ambience.webp") center center/100% 100% no-repeat;filter:brightness(.85)}
.face-portrait{filter:brightness(.9)}
.expression{position:absolute;inset:0;background-image:url("assets/qinche-expressions-aligned.webp");background-size:300% 100%;background-repeat:no-repeat;opacity:0;transition:opacity .28s ease}
.expression.calm{background-position:0% center}
.expression.smile{background-position:50% center}
.expression.serious{background-position:100% center}
.expression.is-active{opacity:1}
.player[data-shot="close"] .face-shot,.player[data-shot="face"] .face-shot,.player[data-shot="chest"] .face-shot,.player[data-shot="abs"] .face-shot{opacity:1;filter:blur(0)}
.player[data-shot="close"] .face-shot{transform:scale(1.02)}
.player[data-shot="face"] .face-shot{transform:scale(1.72);transform-origin:48% 22%}
.player[data-shot="chest"] .face-shot{transform:scale(1.72);transform-origin:52% 54%}
.player[data-shot="abs"] .face-shot{transform:scale(1.88);transform-origin:52% 76%}
.player.is-moving .face-shot{animation:none}
.angle-shot{width:100%;height:100%;object-fit:cover;object-position:center top;opacity:0;filter:blur(12px);transform:scale(1.045);transition:opacity .55s ease,filter .55s ease,transform .7s ease;pointer-events:none}
.player[data-shot="three-quarter"] .angle-three-quarter,.player[data-shot="profile"] .angle-profile{opacity:1;filter:blur(0);transform:scale(1)}
.player.is-moving[data-shot="three-quarter"] .angle-three-quarter,.player.is-moving[data-shot="profile"] .angle-profile{animation:none}
.new-shot{width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;filter:blur(12px);transform:scale(1.035);transition:opacity .55s ease,filter .55s ease,transform .7s ease;pointer-events:none}
.player[data-shot="eyes-direct"] .eyes-direct-shot,.player[data-shot="gentle-gaze"] .gentle-gaze-shot{opacity:1;filter:blur(0);transform:scale(1)}
.gentle-gaze-blink{display:none;mask:url("assets/gentle-gaze-eye-mask.svg") center / cover no-repeat;-webkit-mask:url("assets/gentle-gaze-eye-mask.svg") center / cover no-repeat;filter:none;transform:scale(1);transition:none}
.player[data-shot="gentle-gaze"] .gentle-gaze-blink{display:block;animation:gentle-gaze-blink 6.4s linear infinite}
.player[data-shot="door-coat"] .door-coat-shot,.player[data-shot="door-coat-close"] .door-coat-shot,.player[data-shot="doorway-lookback"] .doorway-lookback-shot,.player[data-shot="doorway-lookback-close"] .doorway-lookback-shot,.player[data-shot="amusement"] .amusement-shot,.player[data-shot="amusement-close"] .amusement-shot{opacity:1;filter:blur(0)}
.player[data-shot="door-coat"] .door-coat-shot,.player[data-shot="doorway-lookback"] .doorway-lookback-shot,.player[data-shot="amusement"] .amusement-shot{transform:scale(1)}
.player[data-shot="amusement-close"] .amusement-shot{transform:scale(1.65);transform-origin:50% 20%}
.amusement-effects{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;transition:opacity .55s ease,transform .7s ease;transform-origin:50% 20%}
.player[data-shot="amusement"] .amusement-effects,.player[data-shot="amusement-close"] .amusement-effects{opacity:1}
.player[data-shot="amusement"] .amusement-effects{animation:single-source-breathe 6.4s ease-in-out infinite}
.player[data-shot="amusement-close"] .amusement-effects{transform:scale(1.65)}
.firework{opacity:0;animation:firework-flicker 5.8s ease-out infinite}
.firework-two{animation-delay:-2.1s}.firework-three{animation-delay:-4s}
.park-lights{opacity:.12;animation:park-light-flicker 5.8s ease-in-out infinite}
.park-lights-two{animation-delay:-2.4s}.park-lights-three{animation-delay:-4.1s}
@keyframes firework-flicker{0%,100%{opacity:0}5%{opacity:.8}15%{opacity:.22}21%{opacity:.5}37%{opacity:0}}
@keyframes park-light-flicker{0%,100%{opacity:.1}18%{opacity:.65}34%{opacity:.2}52%{opacity:.48}76%{opacity:.12}}
@media(prefers-reduced-motion:reduce){.amusement-effects,.firework,.park-lights{animation:none!important}.firework{opacity:0}.park-lights{opacity:.2}}
.player[data-shot="door-coat-close"] .door-coat-shot{transform:scale(1.7);transform-origin:57% 81%}
.player[data-shot="doorway-lookback-close"] .doorway-lookback-shot{transform:scale(1.1);transform-origin:54% 36%}
.couple-shot,.sleep-shot{width:100%;height:100%;object-fit:cover;opacity:0;filter:blur(12px);transition:opacity .6s ease,filter .6s ease,transform .65s ease;pointer-events:none}
.couple-shot{object-position:center;transform:scale(1.04)}
.couple-shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.couple-shot .foot-jewelry{filter:drop-shadow(0 1px 1px #0008)}
.sleep-shot{object-position:center;transform:scale(1.03)}
.player[data-shot="together"] .couple-shot{opacity:1;filter:blur(0);transform:scale(1)}
.player[data-shot="sleep"] .sleep-shot{opacity:1;filter:blur(0);transform:scale(1)}
.player[data-phase="ending"][data-shot="sleep"] .sleep-shot{filter:brightness(.68)}
.player.is-moving[data-shot="together"] .couple-shot{animation:couple-pan 5s ease-out both}
.arm-link-shot,.hand-abs-shot{opacity:0;filter:none;transform:none;transition:opacity .35s ease;pointer-events:none;overflow:hidden}
.arm-link-base{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;object-position:center top;transform:scale(1.38);transform-origin:52% 13%;filter:saturate(.96)}
.arm-link-foreground{position:absolute;width:80%;height:auto;right:-2%;bottom:-34%;transform:rotate(-8deg);filter:drop-shadow(-9px 12px 10px #17050987) saturate(.9)}
.hand-abs-base{background:#210a11 url("assets/qinche-expressions-lit.webp") 50% center/300% 100% no-repeat;transform:scale(1.88);transform-origin:52% 76%;filter:brightness(.9)}
.hand-abs-foreground{position:absolute;width:77%;height:auto;right:-17%;bottom:15.5%;transform-origin:27% 34%;transform:scale(2) rotate(-5deg);filter:drop-shadow(-8px 11px 9px #1c080995) saturate(.9)}
.player[data-shot="arm-link"] .arm-link-shot,.player[data-shot="hand-abs"] .hand-abs-shot{opacity:1;filter:blur(0);transform:scale(1)}
.player.is-moving[data-shot="sleep"] .sleep-shot{animation:none}
.ending-video{width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;filter:blur(10px);transition:opacity .55s ease,filter .55s ease;pointer-events:none;background:#17070b}
.player[data-shot="carry-video"] .ending-video{opacity:1;filter:blur(0)}
.player[data-shot="carry-video"] .scene-light,.player[data-shot="carry-video"] .shade,.player[data-shot="carry-video"] .vignette{opacity:0}
.scene-light{background:radial-gradient(ellipse at 15% 33%,#f4a65e27,transparent 40%),radial-gradient(ellipse at 63% 76%,#e8382d13,transparent 47%);mix-blend-mode:screen;pointer-events:none;animation:lamp-breathe 5.6s ease-in-out infinite alternate}
.player.is-moving .scene-light::after{content:"";position:absolute;inset:0;background:radial-gradient(circle 2px at 19% 41%,#ffd5a770,transparent 3px),radial-gradient(circle 2px at 74% 31%,#ffbe9770,transparent 4px),radial-gradient(circle 1px at 58% 62%,#ffddbc80,transparent 3px);animation:embers 5s ease-in-out infinite alternate}
/* Every illustrated body follows the same quiet inhale: chest, abdomen,
   then head and legs. The base image and room do not breathe. */
.living-overlay{--breath-offset:0s;pointer-events:none;will-change:transform;backface-visibility:hidden;mask-image:radial-gradient(ellipse var(--live-rx) var(--live-ry) at var(--live-x) var(--live-y),#000 14%,#000c 52%,transparent 86%);-webkit-mask-image:radial-gradient(ellipse var(--live-rx) var(--live-ry) at var(--live-x) var(--live-y),#000 14%,#000c 52%,transparent 86%);transform-origin:var(--live-x) var(--live-y)}
.living-overlay.living-female{--breath-offset:-2.2s}
.player .living-overlay.living-head{animation:living-head 6.4s ease-in-out var(--breath-offset) infinite!important}
.player .living-overlay.living-chest{animation:living-chest 6.4s ease-in-out var(--breath-offset) infinite!important}
.player .living-overlay.living-belly{animation:living-belly 6.4s ease-in-out var(--breath-offset) infinite!important}
.player .living-overlay.living-leg{animation:living-leg 6.4s ease-in-out var(--breath-offset) infinite!important}
.player .living-overlay.living-hand{animation:living-hand 6.4s ease-in-out var(--breath-offset) infinite!important}
.player[data-phase="cover"] .scene .living-overlay{display:none}
.player[data-phase="cover"] .scene-light{animation:none}
.expression{--breath-cycle:6.4s}
.expression::before{content:"";position:absolute;inset:0;background-image:inherit;background-size:inherit;background-position:inherit;background-repeat:no-repeat;pointer-events:none}
.expression::before{mask-image:radial-gradient(ellipse 31% 22% at 49% 22%,#000 24%,#000b 56%,transparent 88%);-webkit-mask-image:radial-gradient(ellipse 31% 22% at 49% 22%,#000 24%,#000b 56%,transparent 88%);animation:portrait-head var(--breath-cycle) ease-in-out infinite;transform-origin:49% 31%}
.motion-part{position:absolute;inset:0;background-image:inherit;background-size:inherit;background-position:inherit;background-repeat:no-repeat;pointer-events:none;will-change:transform,opacity}
.motion-chest{mask-image:radial-gradient(ellipse 31% 17% at 68% 43%,#000 12%,#000a 48%,transparent 86%);-webkit-mask-image:radial-gradient(ellipse 31% 17% at 68% 43%,#000 12%,#000a 48%,transparent 86%);animation:portrait-chest var(--breath-cycle) ease-in-out infinite;transform-origin:68% 43%}
.motion-belly{mask-image:radial-gradient(ellipse 25% 14% at 74% 54%,#000 10%,#000a 47%,transparent 86%);-webkit-mask-image:radial-gradient(ellipse 25% 14% at 74% 54%,#000 10%,#000a 47%,transparent 86%);animation:portrait-belly var(--breath-cycle) ease-in-out infinite;transform-origin:74% 54%}
.motion-leg{mask-image:radial-gradient(ellipse 37% 13% at 49% 69%,#000 10%,#0009 48%,transparent 87%);-webkit-mask-image:radial-gradient(ellipse 37% 13% at 49% 69%,#000 10%,#0009 48%,transparent 87%);animation:portrait-leg var(--breath-cycle) ease-in-out infinite;transform-origin:49% 69%}
.motion-blink{background-image:url("assets/qinche-eyes-closed.webp");mask-image:radial-gradient(ellipse 17% 6% at 50% 21%,#000 44%,#000b 73%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 17% 6% at 50% 21%,#000 44%,#000b 73%,transparent 100%);opacity:0;animation:portrait-blink 7.2s linear infinite}
.expression.smile .motion-blink{animation-delay:-2.1s}
.expression.serious .motion-blink{animation-delay:-4.6s}
.face-room{animation:lamp-breathe 6.4s ease-in-out infinite alternate}
.arm-link-shot .living-overlay,.hand-abs-shot .living-overlay{display:none!important}
@keyframes living-hand{0%,18%,100%{translate:0 0}50%,62%{translate:-2px -2px}83%{translate:-1px 0}}
@keyframes single-source-breathe{0%,20%,100%{translate:0 0;scale:1}48%,58%{translate:0 -1px;scale:1.006}82%{translate:0 0;scale:1.002}}
@keyframes living-chest{0%,12%,100%{translate:0 1px;scale:1}42%,52%{translate:0 -2px;scale:1.009}78%{translate:0 0;scale:1.002}}
@keyframes living-belly{0%,18%,100%{translate:0 1px;scale:1}47%,57%{translate:0 -1px;scale:1.006}83%{translate:0 0;scale:1.001}}
@keyframes living-head{0%,27%,100%{translate:0 0;rotate:0deg}51%,61%{translate:0 -1px;rotate:-.08deg}86%{translate:0 0;rotate:0deg}}
@keyframes living-leg{0%,31%,100%{translate:0 1px;rotate:0deg}53%,63%{translate:1px -1px;rotate:-.07deg}88%{translate:0 0;rotate:0deg}}
/* One six-second breath: chest starts the inhale, belly follows, then the
   head and leg respond. They return to rest in the same order. */
@keyframes portrait-chest{0%,12%,100%{transform:translateY(1px) scale(1)}42%,52%{transform:translateY(-3px) scale(1.014)}78%{transform:translateY(0) scale(1.003)}}
@keyframes portrait-belly{0%,18%,100%{transform:translateY(1px) scale(1)}47%,57%{transform:translateY(-2px) scale(1.010)}83%{transform:translateY(0) scale(1.002)}}
@keyframes portrait-head{0%,27%,100%{transform:translateY(0) rotate(0)}51%,61%{transform:translateY(-1.5px) rotate(-.12deg)}86%{transform:translateY(-.3px) rotate(0)}}
@keyframes portrait-leg{0%,31%,100%{transform:translate(0,1px) rotate(0)}53%,63%{transform:translate(1px,-1px) rotate(-.10deg)}88%{transform:translate(0,0) rotate(0)}}
@keyframes portrait-blink{0%,29%,32.5%,100%{opacity:0}29.9%,30.8%{opacity:1}}
@keyframes gentle-gaze-blink{0%,24%,28%,100%{opacity:0}25%,26.5%{opacity:1}}
.shade{z-index:1;background:linear-gradient(180deg,#13070d88 0%,transparent 19%,transparent 57%,#10060a22 76%,#10060a77 100%);pointer-events:none}
.vignette{z-index:2;background:radial-gradient(ellipse at 50% 45%,transparent 43%,#0e050861 100%);pointer-events:none}
.blink-rig{position:absolute;z-index:4;inset:0;opacity:0;pointer-events:none}
.blink-rig i{position:absolute;left:calc(var(--eye-x) - var(--eye-w)/2);top:calc(var(--eye-y) - var(--eye-h)/2);width:var(--eye-w);height:var(--eye-h);border-radius:50%;background:linear-gradient(180deg,#8b584333 0%,#2b1713b8 38%,#120909d9 58%,transparent 100%);box-shadow:0 0 1px #160806c9;filter:blur(.18px);transform:rotate(var(--eye-angle)) scaleY(0);transform-origin:center;opacity:0;animation:story-blink 7.2s linear infinite}
.player[data-shot="seat"] .blink-seat,.player[data-shot="wide"] .blink-wide,.player[data-shot="foot"] .blink-foot,.player[data-shot="near"] .blink-near,.player[data-shot="bed"] .blink-bed,.player[data-shot="arm-link"] .blink-arm-link,.player[data-shot="eyes-direct"] .blink-eyes-direct,.player[data-shot="gentle-gaze"] .blink-gentle-gaze,.player[data-shot="three-quarter"] .blink-three-quarter,.player[data-shot="profile"] .blink-profile,.player[data-shot="doorway-lookback"] .blink-doorway-lookback,.player[data-shot="doorway-lookback-close"] .blink-doorway-lookback-close,.player[data-shot="amusement"] .blink-amusement,.player[data-shot="together"] .blink-together{opacity:1}
@keyframes story-blink{0%,31%,33.8%,100%{opacity:0;transform:rotate(var(--eye-angle)) scaleY(0)}31.7%,33.1%{opacity:.88;transform:rotate(var(--eye-angle)) scaleY(1)}}
.shot-blur{z-index:4;opacity:0;backdrop-filter:blur(12px);background:#2d111a33;pointer-events:none;transition:opacity .22s ease}
.player.is-switching .shot-blur{opacity:1}
.hud{z-index:9;position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;padding:calc(env(safe-area-inset-top) + 18px) 20px 12px}
.hud-button{width:36px;height:36px;flex:none;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:#16080c70;color:#f5ded0;font-size:28px;line-height:1;backdrop-filter:blur(8px)}
.hud-button.replay{font-size:21px}
.hud-button.music{position:relative;font-size:19px}
.hud-button.music.is-muted{opacity:.65}
.hud-button.music.is-muted::after{content:"";position:absolute;left:8px;right:8px;top:17px;height:1px;background:currentColor;transform:rotate(-42deg)}
.hud-title{flex:1;text-align:center;font-size:11px;letter-spacing:.18em;color:#f4daca;text-shadow:0 2px 9px #000}
.hud-title i{display:inline-block;width:3px;height:3px;margin:0 5px 3px;border-radius:50%;background:#dfbdaa}
.cover,.finale{position:absolute;z-index:7;inset:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;padding:0 30px calc(env(safe-area-inset-bottom) + 66px);background:linear-gradient(to top,#100609 0%,#12070bdd 27%,transparent 70%)}
.overline{font-family:Georgia,serif;font-size:11px;letter-spacing:.28em;color:#e9c4ad}
h1,.decision h2,.finale h2{font-family:"Noto Serif SC","STSong","SimSun",serif;font-weight:400;text-shadow:0 3px 22px #000}
h1{margin:16px 0 17px;font-size:clamp(36px,9vw,48px);letter-spacing:.15em;white-space:nowrap}
.cover p,.finale p{margin:0 0 31px;color:#eddbd2;font-size:14px;line-height:1.9}
.start{min-height:55px;min-width:176px;padding:0 23px;border:1px solid #f3dac8b3;border-radius:50px;display:flex;justify-content:space-between;align-items:center;gap:24px;background:linear-gradient(110deg,#ead0b9,#b99083);box-shadow:0 8px 30px #20070b8c;color:#321a1c;font-size:14px;font-weight:700;letter-spacing:.12em}
.start span{font-size:18px;font-weight:400}
.resume{min-height:42px;margin-top:11px;padding:0 18px;border:1px solid #e5baa47d;border-radius:30px;background:#210d15a8;color:#f4d8c8;font-size:13px}
.cover small{margin-top:23px;color:#cfada2;font-size:11px;letter-spacing:.07em}
.subtitle-wrap{position:absolute;z-index:5;left:23px;right:23px;bottom:calc(env(safe-area-inset-bottom) + 83px);padding:8px 7px 9px;background:rgba(0,0,0,.1)}
.player[data-shot="arm-link"] .subtitle-wrap,.player[data-shot="hand-abs"] .subtitle-wrap{bottom:calc(env(safe-area-inset-bottom) + 58px)}
.speaker{font-size:12px;letter-spacing:.2em;color:#efc2a6;min-height:18px;text-shadow:0 2px 9px #000,0 0 2px #000}
.subtitle{margin:5px 0 0;font-size:clamp(17px,4.2vw,20px);line-height:1.6;letter-spacing:.045em;text-shadow:0 2px 8px #000,0 0 3px #000,0 0 20px #000}
.next-line{display:block;margin:7px 0 0 auto;padding:6px 12px;border:1px solid #e8bba87a;border-radius:20px;background:#0000001a;color:#f9e4da;font-size:11px;letter-spacing:.06em;text-shadow:0 1px 5px #000}
.foot-action{position:absolute;z-index:8;left:0;right:0;bottom:0;height:40%;border:0;background:transparent;color:#ffe9dc}
.foot-ring{position:absolute;right:12%;bottom:8%;width:72px;height:72px;border:1px solid #fff5e0cb;border-radius:50%;box-shadow:0 0 0 10px #fff4e222,0 0 28px #e9aa7ba6;animation:pulse 1.5s ease-in-out infinite}
.foot-ring::after{content:"+";display:grid;place-items:center;width:100%;height:100%;font-size:24px;font-weight:200}
.foot-label{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 188px);transform:translateX(-50%);min-width:232px;padding:13px 18px;border:1px solid var(--line);border-radius:50px;background:#2b101ac4;box-shadow:0 8px 30px #0009;backdrop-filter:blur(12px);font-size:13px;letter-spacing:.08em}
.foot-label b{margin-left:8px;font-weight:400}
@keyframes pulse{50%{box-shadow:0 0 0 20px #fff4e20a,0 0 42px #efb47abf;transform:scale(1.08)}}
@keyframes scene-breathe{to{scale:1.023}}
@keyframes lamp-breathe{to{opacity:.67}}
@keyframes detail-breathe{to{scale:1.025}}
@keyframes couple-pan{from{transform:scale(1.055) translateY(1%)}to{transform:scale(1)}}
@keyframes sleep-pan{from{transform:scale(1.03) translateY(1%);filter:brightness(1)}to{transform:scale(1.10) translateY(-1%);filter:brightness(.68)}}
@keyframes embers{to{opacity:.25;transform:translateY(-12px)}}
.gaze-action{position:absolute;z-index:8;left:8%;right:8%;top:13%;height:53%;border:0;background:transparent;color:#ffe9dc}
.gaze-ring{position:absolute;left:36%;top:14%;width:62px;height:62px;border:1px solid #fff5e0c8;border-radius:50%;box-shadow:0 0 0 8px #fff4e217,0 0 29px #e9aa7b8c;animation:pulse 1.5s ease-in-out infinite}
.gaze-ring::after{content:"+";display:grid;place-items:center;width:100%;height:100%;font-size:22px;font-weight:200}
.gaze-label{position:absolute;left:50%;bottom:3%;transform:translateX(-50%);min-width:172px;padding:13px 18px;border:1px solid var(--line);border-radius:50px;background:#2b101ac4;box-shadow:0 8px 30px #0009;backdrop-filter:blur(12px);font-size:13px;letter-spacing:.08em}
.gaze-label b{margin-left:8px;font-weight:400}
.hand-action{position:absolute;z-index:8;left:15%;right:0;top:55%;height:27%;border:0;background:transparent;color:#ffe9dc}
.hand-ring{position:absolute;left:7%;top:7%;width:66px;height:66px;border:1px solid #fff5e0cb;border-radius:50%;box-shadow:0 0 0 9px #fff4e222,0 0 28px #e9aa7ba6;animation:pulse 1.5s ease-in-out infinite}
.hand-ring::after{content:"+";display:grid;place-items:center;width:100%;height:100%;font-size:23px;font-weight:200}
.hand-label{position:absolute;left:80px;top:-20px;min-width:160px;padding:12px 17px;border:1px solid var(--line);border-radius:50px;background:#2b101ac4;box-shadow:0 8px 30px #0009;backdrop-filter:blur(12px);font-size:13px;letter-spacing:.08em}
.hand-label b{margin-left:8px;font-weight:400}
.decision{position:absolute;z-index:8;inset:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding:0 22px calc(env(safe-area-inset-bottom) + 72px);text-align:center;background:linear-gradient(to top,#110609fb 0%,#16080ddc 40%,transparent 82%)}
.pause-mark{font-size:11px;letter-spacing:.22em;color:#f1bea5}
.decision h2{margin:16px 0 9px;font-size:29px;letter-spacing:.15em}
.decision p{margin:0 0 23px;color:#e4cdc4;font-size:13px;line-height:1.7}
.decision-actions{width:100%;display:grid;gap:11px}
.decision-actions button{min-height:55px;border:1px solid #eec7b99c;border-radius:100px;background:linear-gradient(115deg,#77333c9c,#55232c9c);color:#fff0e6;font-size:15px;letter-spacing:.09em;backdrop-filter:blur(10px)}
.decision-actions button:active,.decision-actions button:hover{background:#a65056b8}
.finale{background:linear-gradient(to top,#100609 0%,#16080dea 38%,transparent 82%)}
.finale h2{margin:17px 0 14px;font-size:32px;letter-spacing:.12em}
.finale .resume{margin:0 0 12px}
.film-ending{position:absolute;z-index:7;inset:0;pointer-events:none}
.film-controls{position:absolute;right:19px;bottom:calc(env(safe-area-inset-bottom) + 24px);display:flex;gap:10px}
.film-controls button{pointer-events:auto;border:1px solid #e9c9b77d;border-radius:20px;background:#17090d78;backdrop-filter:blur(8px);color:#fff0e5;font-size:12px;letter-spacing:.08em;padding:8px 12px;text-shadow:0 1px 6px #000}
.bottom-hud{z-index:6;position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:12px;padding:0 23px calc(env(safe-area-inset-bottom) + 25px);color:#d7bbb0;font-size:10px;letter-spacing:.08em}
.track{height:2px;flex:1;background:#e8c7bd55}
.track div{height:100%;width:0;background:#eab69c;box-shadow:0 0 8px #e4a490}
.time{font-variant-numeric:tabular-nums}
@media(min-width:520px){.player{height:min(96dvh,930px);border:1px solid #eed1c331;border-radius:12px}}
@media(max-height:700px){.cover,.finale{padding-bottom:calc(env(safe-area-inset-bottom) + 40px)}.subtitle-wrap{bottom:calc(env(safe-area-inset-bottom) + 60px)}.decision{padding-bottom:calc(env(safe-area-inset-bottom) + 43px)}}
@media(prefers-reduced-motion:reduce){.scene-image,.scene-light,.face-shot,.face-room,.expression,.expression::before,.motion-part,.angle-shot,.new-shot,.couple-shot,.arm-link-shot,.hand-abs-shot,.hand-abs-base,.arm-link-foreground,.hand-abs-foreground,.sleep-shot,.player .living-overlay,.foot-ring,.gaze-ring,.hand-ring,.blink-rig i{animation:none!important;transition:none!important}.motion-blink,.gentle-gaze-blink,.blink-rig{opacity:0!important}}
