.break-scene{position:absolute;inset:0;z-index:8;overflow:hidden;pointer-events:none;isolation:isolate;opacity:0;transition:opacity 1.2s ease;background:repeating-linear-gradient(0deg,#07080a 0 3px,#141519 4px 5px)}
.break-scene::before{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 7%,#ab002650 27%,transparent 46%,#fff3 70%,transparent 83%);animation:break-scan 2.3s steps(7) infinite}
.break-row{position:absolute;left:calc(-18% + var(--i)*3%);top:calc(8% + var(--i)*12%);width:160%;white-space:nowrap;font:700 clamp(25px,8vw,50px)/1.15 "Hiragino Mincho ProN","Hiragino Mincho Pro","YuMincho","Yu Mincho","HGS明朝E","MS PMincho",serif;color:#f1f1f1;text-shadow:3px 0 #b00029,-3px 0 #134556;opacity:0;transition:opacity 1s ease;animation:break-shift 1.8s steps(5) infinite;animation-delay:calc(var(--i)*-121ms)}
.break-overflow .break-row,.break-tomorrow-loop .break-row{font-size:clamp(40px,13vw,79px);left:calc(-42% + var(--i)*4%);letter-spacing:-.08em}
.break-cold{background:linear-gradient(#050608 5%,#2d000b 55%,#940020)}.break-cold .break-row{color:#ef1641;transform:rotate(-8deg) scaleY(1.7)}
.break-echo .break-row{left:calc(-35% + var(--i)*11%);opacity:calc(1 - var(--i)*.11)}
.break-tomorrow .break-row{white-space:normal;width:60%;left:calc(var(--i)*22% - 13%);top:calc(var(--i)*12%);transform:rotate(calc((var(--i) - 3)*19deg))}
.break-focal{position:absolute;top:37%;left:-5%;width:110%;text-align:center;font:900 clamp(60px,22vw,150px)/1 "Hiragino Mincho ProN","Hiragino Mincho Pro","YuMincho","Yu Mincho","HGS明朝E","MS PMincho",serif;color:#f0f0f0;background:#09090c;letter-spacing:-.1em;opacity:0;transition:opacity 1.3s ease}
.break-clock .break-focal{color:#e00032;font-size:clamp(80px,28vw,180px)}
.break-photo .break-row,.break-funeral .break-row{white-space:pre-line;line-height:1.4;top:calc(9% + var(--i)*10%);left:calc(-5% + var(--i)*3%)}
.break-photo::after,.break-funeral::after{content:'';position:absolute;top:10%;left:22%;width:56%;height:44%;border:clamp(8px,4vw,18px) solid #ddd;box-shadow:0 0 0 7px #13090d,20px 15px 0 #570014;transform:rotate(-5deg);mix-blend-mode:difference}
.break-low{background:linear-gradient(#08090c 0 20%,#33000c 46%,#a00024 100%)}.break-low .break-row{top:calc(90% - var(--i)*12%);font-size:clamp(45px,17vw,100px)}
.break-death .break-row{white-space:normal;top:calc(3% + var(--i)*12%);font-size:clamp(39px,13vw,85px);transform:scaleX(1.15) skewX(-11deg)}.break-death .break-row:last-child{color:#ef0032}
.screen-breaking .contact-avatar,.screen-breaking .call-game,.screen-breaking .phone-controls{filter:contrast(calc(1 + var(--break-level)*1)) hue-rotate(calc(var(--break-level)*22deg));transition:filter 1.2s ease}
.break-scene.at-target .break-row{text-shadow:5px 0 #b00029,-5px 0 #134556}
@keyframes break-shift{0%,100%{translate:0 0}25%{translate:8px -3px}50%{translate:-11px 5px}75%{translate:4px -6px}}
@keyframes break-scan{50%{transform:translateX(-16%) skewX(7deg);opacity:.45}}
@media(prefers-reduced-motion:reduce){.break-row,.break-scene::before{animation:none}}

/* Dedicated wrong-answer screen-collapse scenes for STAGE 05 / 12 / 37 / 39. */
.break-unseen,.break-memorial,.break-deadtext,.break-mourners{background:#05060800;transition:opacity .9s ease}

/* STAGE 05 — no one can see Aki: Aki-specific UI is erased while his words remain. */
.break-mode-unseen .contact-avatar,.break-mode-unseen #callerName,.break-mode-unseen .dialogue-speaker{opacity:var(--break-unseen-opacity)!important;filter:blur(var(--break-unseen-blur));transition:opacity .8s ease,filter .8s ease}
.break-unseen::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 21%,transparent 0 10%,#05060800 22%,#05060888 80%);opacity:var(--break-unseen-dim);transition:opacity .8s ease}

/* STAGE 12 — Aki's photo enters the supplied memorial frame and consumes the screen. */
.break-memorial{display:grid;place-items:center;background:#05060800}
.break-memorial-frame{position:relative;width:92px;height:92px;border-radius:50%;background:#0a0a0a;overflow:hidden;box-shadow:0 0 0 0 #050608;transform:scale(var(--break-memorial-scale));transition:width 1s ease,height 1s ease,border-radius 1s ease,box-shadow 1s ease,transform 1s ease,background 1s ease}
.break-memorial-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 32%;filter:grayscale(1) contrast(1.08);transition:inset 1s ease,width 1s ease,height 1s ease,filter 1s ease}
.break-memorial-overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .7s ease}
.break-memorial.at-target{background:#050608d8}
.break-memorial.at-target .break-memorial-frame{width:min(78vw,330px);height:min(78vw,330px);border-radius:2px;overflow:visible;background:transparent;box-shadow:0 22px 55px #000;transform:scale(1)}
.break-memorial.at-target .break-memorial-photo{inset:21% auto auto 27%;width:46%;height:60%;object-position:50% 34%;filter:grayscale(1) contrast(1.2) brightness(.7)}
.break-memorial.at-target .break-memorial-overlay{opacity:1}

/* STAGE 37 — ordinary interface labels are overwritten by the same word. */
.break-deadtext{background:#05060812}
.break-dead-word{position:absolute;z-index:1;color:#f1f1ef;background:#08090be8;padding:2px 6px;font-weight:800;letter-spacing:.08em;opacity:0;transform:scale(.86);transition:opacity .24s ease,transform .3s ease;font-family:"Hiragino Mincho ProN","Yu Mincho",serif}
.break-dead-word.is-visible{opacity:1;transform:scale(1)}
.break-dead-top{top:4%;left:7%;font-size:14px}.break-dead-name{top:15%;left:50%;translate:-50% 0;font-size:24px}.break-dead-time{top:21%;left:50%;translate:-50% 0;font-size:12px}.break-dead-dialogue{top:39%;left:50%;translate:-50% 0;font-size:30px}.break-dead-left{top:58%;left:10%;font-size:18px}.break-dead-right{top:58%;right:10%;font-size:18px}.break-dead-mute{bottom:18%;left:12%;font-size:12px}.break-dead-keypad{bottom:18%;left:50%;translate:-50% 0;font-size:12px}.break-dead-speaker{bottom:18%;right:10%;font-size:12px}.break-dead-bottom{bottom:7%;left:50%;translate:-50% 0;font-size:16px}.break-dead-p1{top:28%;left:4%;font-size:11px}.break-dead-p2{top:31%;right:5%;font-size:13px}.break-dead-p3{top:47%;left:2%;font-size:20px}.break-dead-p4{top:49%;right:3%;font-size:16px}.break-dead-p5{bottom:28%;left:5%;font-size:23px}.break-dead-p6{bottom:31%;right:6%;font-size:19px}
.break-deadtext.at-target{background:#0506087d}

/* STAGE 39 — only the altar photo gradually emerges from the dark. */
.break-mourners{background:#05060822}
.break-mourners-photo{position:absolute;inset:-4%;width:108%;height:108%;object-fit:cover;object-position:center;opacity:var(--break-photo-opacity,0);filter:brightness(.42) contrast(1.12) saturate(.7);transform:scale(var(--break-photo-scale,1.08));transition:opacity .8s ease,transform 1.1s ease,filter 1s ease}
.break-mourners.at-target .break-mourners-photo{filter:brightness(.58) contrast(1.18) saturate(.55)}
.break-mourners::before{display:none}

@media(max-height:600px){.break-memorial.at-target .break-memorial-frame{width:min(70vw,58vh,280px);height:min(70vw,58vh,280px)}}

/* Private fragment-only stage replay. No debug UI is created on ordinary URLs. */
.horror-debug-panel{position:fixed;z-index:1000;top:max(10px,env(safe-area-inset-top));left:10px;width:min(360px,calc(100vw - 20px));max-height:calc(100dvh - 20px - env(safe-area-inset-top));padding:10px;background:#08090bf2;border:1px solid #4a4d53;border-radius:10px;display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px;color:#eee;font-size:12px;box-shadow:0 12px 35px #000b;transition:opacity .2s ease,transform .2s ease}
.horror-debug-panel.is-collapsed{visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-12px)}
.horror-debug-header{display:grid;gap:3px;padding:2px 2px 5px}.horror-debug-title{font-weight:700;letter-spacing:.06em}.horror-debug-note{color:#9da0a8;font-size:10px;line-height:1.4}
.horror-debug-list{min-height:0;overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:6px;padding-right:2px;overscroll-behavior:contain}
.horror-debug-panel button,.horror-debug-toggle{border:1px solid #3b3e44;background:#15171b;color:#eee;border-radius:7px;padding:8px 10px;font:inherit;text-align:left}
.horror-debug-panel{top:max(8px,env(safe-area-inset-top));bottom:max(70px,calc(env(safe-area-inset-bottom) + 62px));max-height:none;touch-action:pan-y}
.horror-debug-list button{min-height:44px;touch-action:manipulation}
.horror-debug-toggle{position:absolute;z-index:1001;left:12px;bottom:max(12px,env(safe-area-inset-bottom));min-height:44px;font-size:12px;padding:10px 12px;touch-action:manipulation}
