:root{--text:#f5f1ea;--soft:rgba(245,241,234,.7);--faint:rgba(245,241,234,.4);--line:rgba(255,255,255,.16);--line-strong:rgba(255,255,255,.3);--gold:#ffd479;--pink:#ff5a98;--mint:#5eead4;--danger:#ff745f;--panel:rgba(7,8,12,.86)}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#07080c;color:var(--text);font-family:"Noto Serif SC","Songti SC",serif}button,a{font:inherit}.heartbeat{position:relative;width:100%;height:100dvh;min-height:320px;overflow:hidden;isolation:isolate;background:#07080c;touch-action:none}.scene{position:absolute;inset:0;background:url("assets/theater-elevator-night-v1.png") center/cover no-repeat;filter:saturate(.55) contrast(1.08);transform:scale(1.015)}.shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,4,7,.92),rgba(3,4,7,.34) 45%,rgba(3,4,7,.65)),linear-gradient(180deg,rgba(3,4,7,.74),transparent 33%,rgba(3,4,7,.92))}.shade::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 59% 43%,rgba(255,90,152,.09),transparent 28%)}
.hud{position:absolute;z-index:20;left:0;right:0;top:0;height:56px;padding:max(6px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 6px max(16px,env(safe-area-inset-left));display:grid;grid-template-columns:48px 1fr auto 150px;align-items:center;border-bottom:1px solid var(--line);background:rgba(7,8,12,.7);backdrop-filter:blur(12px)}.icon-button,.motion-toggle{min-width:44px;height:44px;border:1px solid var(--line);border-radius:6px;background:rgba(10,11,16,.72);color:var(--text);display:flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none}.icon-button svg,.motion-toggle svg,.intro-layer button svg,.primary-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.hud__title{padding-left:12px;display:flex;flex-direction:column;gap:2px}.hud__title span,.narrative>p,.intro-layer__panel>span,.result-card>span{font:9px/1.2 "DM Mono",monospace;letter-spacing:2.2px;color:var(--faint)}.hud__title strong{font-size:15px;letter-spacing:2px}.hud__status{height:32px;display:flex;align-items:center;border:1px solid var(--line);padding:0 12px;gap:8px;color:var(--faint);font:10px/1 "DM Mono",monospace}.hud__status b{color:var(--pink);font-size:11px}.hud__status i{width:1px;height:14px;background:var(--line)}.motion-toggle{gap:8px;margin-left:10px;padding:0 12px;color:var(--soft);font-size:10px}.motion-toggle b{color:var(--mint)}
.narrative{position:absolute;z-index:7;left:50%;top:70px;width:min(560px,66vw);transform:translateX(-50%);text-align:center}.narrative>p{margin:0 0 5px;color:var(--pink)}.narrative h1{margin:0;font-size:clamp(25px,3vw,40px);line-height:1.15;letter-spacing:3px}.narrative>span{display:block;margin-top:6px;color:var(--soft);font-size:9px;line-height:1.45}
.playfield{position:absolute;z-index:6;left:max(30px,env(safe-area-inset-left));right:max(30px,env(safe-area-inset-right));top:126px;bottom:84px;display:grid;grid-template-columns:104px minmax(330px,1fr) 104px;align-items:center;gap:30px}.timer{display:none}.gauge{align-self:stretch;padding:12px 0 8px;display:flex;flex-direction:column}.gauge__head{display:flex;justify-content:space-between;align-items:baseline}.gauge__head span{color:var(--soft);font-size:10px}.gauge__head b{font:18px/1 "DM Mono",monospace}.gauge__track{position:relative;flex:1;min-height:92px;margin:7px auto;width:14px;background:rgba(6,7,11,.72);border:1px solid var(--line);overflow:hidden}.gauge__track i{position:absolute;left:0;right:0;bottom:0;height:0;transition:height .08s linear}.gauge__track em{position:absolute;left:-4px;right:-4px;bottom:64%;height:1px;background:rgba(255,255,255,.24)}.gauge small{color:var(--faint);font-size:7px;line-height:1.35;text-align:center}.gauge--affection{justify-self:start}.gauge--exposure{justify-self:end}.gauge--affection .gauge__head b{color:var(--pink)}.gauge--affection .gauge__track i{background:linear-gradient(0deg,#ff357e,#ff9dbc)}.gauge--exposure .gauge__head b{color:var(--danger)}.gauge--exposure .gauge__track i{background:linear-gradient(0deg,#ffd479,#ff745f)}.gauge--exposure .gauge__track .danger-line{bottom:88%;background:var(--danger);box-shadow:0 0 8px var(--danger)}
.distance{align-self:end;margin-bottom:14px}.distance__labels{display:grid;grid-template-columns:48px 1fr 48px;align-items:end;margin-bottom:10px;color:var(--faint);font-size:9px}.distance__labels p{margin:0;text-align:center;color:var(--text);font-size:13px;font-style:italic}.distance__labels span:last-child{text-align:right}.distance__track{position:relative;height:24px;border:1px solid var(--line-strong);background:rgba(5,6,10,.72)}.distance__track::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line)}.safe-zone{position:absolute;top:3px;bottom:3px;left:42%;width:22%;border-left:1px solid var(--mint);border-right:1px solid var(--mint);background:rgba(94,234,212,.13);transition:left .32s ease,width .32s ease}.safe-zone span{display:none}.distance-dot{position:absolute;z-index:2;left:22%;top:50%;width:18px;height:18px;border:2px solid white;border-radius:50%;background:var(--pink);transform:translate(-50%,-50%);box-shadow:0 0 16px rgba(255,90,152,.8);transition:box-shadow .15s}.distance-dot.is-safe{box-shadow:0 0 20px rgba(94,234,212,.92)}.distance__hint{margin:8px 0 0;text-align:center;color:var(--soft);font-size:9px}
.controlbar{position:absolute;z-index:10;left:0;right:0;bottom:0;min-height:74px;padding:9px max(24px,env(safe-area-inset-right)) max(9px,env(safe-area-inset-bottom)) max(32px,env(safe-area-inset-left));display:grid;grid-template-columns:1fr minmax(260px,380px) 110px;align-items:center;gap:24px;border-top:1px solid var(--line);background:rgba(6,7,11,.9);backdrop-filter:blur(13px)}.controlbar__rule{display:flex;align-items:center;gap:12px}.controlbar__rule>span{padding:5px 7px;border:1px solid var(--line);color:var(--pink);font-size:8px}.controlbar__rule p{margin:0;color:var(--soft);font-size:9px}.hold-button{position:relative;height:52px;border:1px solid rgba(255,90,152,.72);border-radius:6px;background:rgba(30,13,24,.9);color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;overflow:hidden;line-height:1;user-select:none;-webkit-user-select:none}.hold-button::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,90,152,.18),transparent);transform:translateX(-110%)}.hold-button span{color:var(--pink);font-size:9px;line-height:1}.hold-button strong{font-size:14px;letter-spacing:2px;line-height:1}.hold-button i{width:7px;height:7px;border:1px solid var(--pink);transform:rotate(45deg)}.hold-button.is-held{background:var(--pink);color:#170812}.hold-button.is-held::before{animation:sweep .8s linear infinite}.hold-button.is-held span{color:#170812}.controlbar__time{text-align:right;font:9px/1 "DM Mono",monospace;color:var(--faint)}.controlbar__time b{margin-left:8px;color:var(--text);font-size:19px}.controlbar__time small{margin-left:3px}@keyframes sweep{to{transform:translateX(110%)}}
.intro-layer,.result-layer{position:absolute;z-index:40;inset:0;display:grid;place-items:center;padding:16px;background:rgba(3,4,7,.72);backdrop-filter:blur(9px)}.intro-layer[hidden],.result-layer[hidden]{display:none}.intro-layer__panel,.result-card{width:min(580px,90vw);padding:22px;border:1px solid var(--line-strong);background:rgba(8,9,13,.96);box-shadow:0 24px 70px rgba(0,0,0,.55)}.intro-layer__panel>span,.result-card>span{color:var(--pink)}.intro-layer h2,.result-card h2{margin:9px 0;font-size:26px;letter-spacing:2px}.intro-layer p,.result-card>p{margin:0;color:var(--soft);font-size:11px;line-height:1.7}.intro-layer button{margin:18px 0 0 auto;width:210px;height:48px;padding:0 16px;border:1px solid var(--gold);border-radius:6px;background:var(--gold);color:#17130b;display:flex;align-items:center;justify-content:space-between;font-weight:700;letter-spacing:2px;cursor:pointer}.result-values{display:grid;grid-template-columns:repeat(3,1fr);margin:17px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.result-values div{min-height:64px;padding:10px;border-right:1px solid var(--line)}.result-values div:last-child{border:0}.result-values span{display:block;color:var(--faint);font-size:8px}.result-values b{display:block;margin-top:7px;font-size:15px}.result-card footer{display:grid;grid-template-columns:1fr 1.2fr;gap:8px}.secondary-button,.primary-button{height:48px;border-radius:6px;display:flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;font-weight:700;letter-spacing:1px}.secondary-button{border:1px solid var(--line-strong);background:transparent;color:var(--text)}.primary-button{padding:0 16px;border:1px solid var(--gold);background:var(--gold);color:#17130b;justify-content:space-between}
.heartbeat.motion-off *{animation:none!important;transition:none!important}.heartbeat.motion-off .scene{transform:none}
@media(max-width:1000px){.hud{height:48px;grid-template-columns:44px 1fr auto 44px;padding-top:2px;padding-bottom:2px}.hud__title{padding-left:8px}.hud__title span{font-size:8px}.hud__title strong{font-size:12px}.hud__status{height:30px;padding:0 8px}.motion-toggle{width:44px;padding:0;margin-left:7px}.motion-toggle span,.motion-toggle b{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.narrative{top:58px;width:62vw}.narrative>p{font-size:8px}.narrative h1{font-size:22px}.narrative>span{font-size:8px}.playfield{left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right));top:111px;bottom:68px;grid-template-columns:72px minmax(270px,1fr) 72px;gap:12px}.timer{left:86px;right:86px}.gauge{padding-top:9px}.gauge__head{flex-direction:column;align-items:center;gap:2px}.gauge__head b{font-size:15px}.gauge__track{min-height:72px}.distance__labels p{font-size:10px}.distance__track{height:20px}.controlbar{min-height:62px;padding:6px max(10px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));grid-template-columns:1fr minmax(210px,300px) 78px;gap:12px}.controlbar__rule p{font-size:8px}.hold-button{height:48px}.controlbar__time b{font-size:15px}.intro-layer__panel,.result-card{padding:16px}.intro-layer h2,.result-card h2{font-size:20px}.intro-layer button{height:44px;margin-top:12px}}
@media(max-height:370px){.narrative{top:53px}.narrative>span{display:none}.narrative h1{font-size:20px}.playfield{top:93px;bottom:62px}.gauge small{display:none}.gauge__track{min-height:62px}.distance{margin-bottom:5px}.distance__hint{margin-top:5px}.controlbar__rule p{max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.intro-layer__panel>p{font-size:9px}.intro-layer h2{margin:6px 0}.result-values div{min-height:52px;padding:7px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.scene{transform:none}}
