/* Investigation is a second scene, not a popup. No permanent room HUD or white markers. */
#room{height:100dvh;min-height:0}
.room-caption,.room-footer{display:none}
.hotspot-dot{display:none!important}
.hotspot-label{display:none}
.hotspot{min-height:0;min-width:0;pointer-events:none}
.hotspot-hit{position:absolute;inset:0;clip-path:var(--hotspot-shape);pointer-events:auto}
.hotspot[data-object="papers"]{z-index:2}
.hotspot::after{content:attr(data-hint);position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%);color:#d0c5af;font-size:12px;letter-spacing:.12em;white-space:nowrap;opacity:0;text-shadow:0 1px 6px #000;transition:opacity .3s;pointer-events:none}
.hotspot:hover::after,.hotspot:focus-visible::after{opacity:.9}
.hotspot:focus-visible{outline:none}
.object-light{backdrop-filter:brightness(1.055)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body[data-investigation="entering"] .scene,body[data-investigation="inspecting"] .scene,body[data-investigation="exiting"] .scene{transition:none!important}
body[data-investigation]:not([data-investigation="room"]) #room{pointer-events:none}
#investigation-view{position:fixed;inset:0;z-index:20;overflow:hidden;background:transparent;isolation:isolate;opacity:0;touch-action:manipulation}
#detail-plane{position:absolute;left:50%;top:50%;transform-origin:center;will-change:transform;line-height:0;overflow:hidden}
/* v4 keeps the supplied photo orientation and complete 1456 × 816 frame. */
#paper-scene{position:absolute;inset:0 0 auto;height:100%;transform:none;transform-origin:center}
#paper-scene img{width:100%;height:100%;object-fit:fill;display:block;user-select:none;-webkit-user-drag:none}
#detail-image,#paper-underlay{position:absolute;inset:0;pointer-events:none}
#paper-underlay{mask-image:var(--paper-repair-mask);mask-size:100% 100%;mask-repeat:no-repeat}
.paper-object{position:absolute;inset:0;width:100%;height:100%;padding:0;pointer-events:none;opacity:1;background:transparent;touch-action:none;transform:translate(var(--paper-x,0%),var(--paper-y,0%)) rotate(var(--paper-turn,0deg));transform-origin:18% 86%;transition:filter .2s;outline:none}
.paper-object span{position:absolute;inset:0;clip-path:var(--paper-outline);pointer-events:auto;cursor:grab;touch-action:none}
.paper-object img{pointer-events:none}
.paper-object:hover,.paper-object:focus-visible{filter:brightness(1.025);outline:none}
.paper-object[data-displaced="true"]{filter:drop-shadow(0 1px 1.5px #140f0b55)}
.paper-object[data-dragging="true"]{filter:drop-shadow(0 2px 2px #140f0b55) brightness(1.025)}
.paper-object[data-dragging="true"] span{cursor:grabbing}
.paper-object:disabled{opacity:1}
.paper-object:disabled span{pointer-events:none}
#leave-investigation{position:fixed;left:max(24px,env(safe-area-inset-left));bottom:max(22px,env(safe-area-inset-bottom));width:48px;height:48px;padding:12px;color:#d6c9b0;opacity:0;transition:opacity .35s;background:transparent;filter:drop-shadow(0 1px 4px #000);z-index:3}
#leave-investigation svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
body[data-investigation="inspecting"] #leave-investigation{opacity:.8}
body[data-investigation="entering"] #leave-investigation{opacity:.8;pointer-events:auto}
#investigation-view[data-loading="true"],#portfolio-view[data-loading="true"],#computer-view[data-loading="true"]{opacity:1!important}
#investigation-view[data-loading="true"] #detail-plane,#portfolio-view[data-loading="true"] #board-plane,#computer-view[data-loading="true"] #computer-plane{visibility:hidden}
body[data-portfolio-state="entering"] #portfolio-return,body[data-computer-state="entering"] #computer-return{pointer-events:auto}
#leave-investigation:hover,#leave-investigation:focus-visible{opacity:1}
#paper-observation{position:fixed;bottom:max(35px,env(safe-area-inset-bottom));left:90px;right:90px;text-align:center;color:#e0d3b8;font-size:13px;letter-spacing:.16em;line-height:1.5;text-shadow:0 1px 8px #000;opacity:0;transition:opacity .5s;pointer-events:none}
#paper-observation.visible{opacity:1}
body[data-investigation="entering"] .paper-object span,body[data-investigation="exiting"] .paper-object span{pointer-events:none}
@media(pointer:coarse){.hotspot-hit{clip-path:none;inset:auto;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}}
@media(hover:none){#leave-investigation{left:12px;bottom:12px}#paper-observation{font-size:12px;left:70px;right:25px;bottom:26px}}
/* Keep one landscape game stage on portrait devices, rather than a vertical webpage. */
@media(orientation:portrait){#room,#investigation-view{position:fixed;width:100dvh;height:100vw;min-height:0;inset:auto;left:50%;top:50%;transform:translate(-50%,-50%) rotate(90deg)}body{overflow:hidden}#leave-investigation{position:absolute}#paper-observation{position:absolute}}
@media(prefers-reduced-motion:reduce){#detail-plane{will-change:auto}}

#paper-glasses span{clip-path:none;pointer-events:none}
#paper-glasses .glass-hit{position:absolute;inset:0;clip-path:var(--paper-outline);pointer-events:auto;cursor:grab;touch-action:none}
#paper-glasses img{position:absolute;left:var(--glass-x);top:var(--glass-y);width:var(--glass-width);height:var(--glass-height);object-fit:fill;filter:brightness(.82) saturate(.72)}
#paper-glasses{filter:drop-shadow(1px 3px 2px #1b160b65)}
#paper-glasses[data-dragging="true"]{filter:drop-shadow(2px 5px 3px #1b160b60)}
#paper-glasses[data-dragging="true"] .glass-hit{cursor:grabbing}
#paper-glasses:disabled .glass-hit{pointer-events:none}
#paper-glasses[data-settling="true"]{transition:transform .7s cubic-bezier(.22,.61,.36,1),filter .2s}
#paper-glasses[data-parked="true"] .glass-hit{pointer-events:none}
#paper-glasses{transform:translate(var(--paper-x,0%),var(--paper-y,0%)) rotate(var(--paper-turn,0deg)) scale(var(--paper-scale,1))}
#paper-glasses .glass-hit{cursor:pointer}
#paper-glasses[data-held="true"]{filter:drop-shadow(0 9px 7px #1b160b65)}
#pickup-hands{position:absolute;inset:0;pointer-events:none;transform-origin:53.5% 57%;filter:drop-shadow(1px 6px 5px #160f0844);isolation:isolate}
#paper-scene #pickup-hands img{position:absolute;inset:0;filter:var(--hand-grade);pointer-events:none}
#pickup-hands .pickup-open{opacity:calc(1 - var(--hand-grip,0));mix-blend-mode:plus-lighter}
#pickup-hands .pickup-grip{opacity:var(--hand-grip,0);mix-blend-mode:plus-lighter}
#pickup-hands .pickup-left{clip-path:inset(0 50% 0 0);transform:translate(var(--hand-left-x),var(--hand-left-y))}
#pickup-hands .pickup-right{clip-path:inset(0 0 0 50%);transform:translate(var(--hand-right-x),var(--hand-right-y))}
#retrieve-glasses{position:absolute;right:max(24px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));min-height:44px;padding:8px 12px;background:transparent;color:#d6c9b0;font:13px 'Songti SC',serif;letter-spacing:.12em;text-shadow:0 1px 5px #000;opacity:.75;z-index:3}
#retrieve-glasses:hover,#retrieve-glasses:focus-visible{opacity:1}
#retrieve-glasses:disabled{pointer-events:none;opacity:0}
@media(prefers-reduced-motion:reduce){#paper-glasses[data-settling="true"]{transition:none}}
/* Ink lives on the manuscript, with the same mirror, perspective and drag pose. */
.paper-print{position:absolute;inset:0;clip-path:var(--paper-outline);pointer-events:none;mix-blend-mode:multiply}
#resume-ink{position:absolute;left:0;top:0;transform-origin:0 0;text-align:left;color:#352b20;font-family:'Songti SC','STSong','Noto Serif CJK SC',serif;font-synthesis:none;line-height:1.3;pointer-events:none}
#resume-ink p,#resume-ink strong{position:absolute;left:26px;margin:0;white-space:nowrap;font-weight:400;opacity:var(--unfocused-opacity,.78);filter:blur(var(--unfocused-blur,5.2px));transition:opacity .45s ease,filter .45s ease;user-select:none}
#resume-ink .ink-name{top:18px;font-size:27px;letter-spacing:.13em}
#resume-ink .ink-title{top:60px;left:24px;font-size:46px;letter-spacing:.08em}
#resume-ink .ink-role{top:128px;font-size:23px}
#resume-ink .ink-ai{top:160px;font-size:23px}
#resume-ink .ink-open{top:212px;font-size:23px;letter-spacing:.08em;opacity:0;filter:none}
#resume-ink .ink-cue{top:212px;font-size:23px;letter-spacing:.14em;opacity:.6;filter:none;transition:opacity .55s ease}
#paper-top[data-worn="true"] #resume-ink p,#paper-top[data-worn="true"] #resume-ink strong{opacity:.94;filter:blur(0);transition-duration:var(--focus-duration,2400ms)}
#paper-top[data-worn="true"] #resume-ink .ink-open{transition-delay:1.6s;transition-duration:.6s}
#paper-top[data-worn="true"] #resume-ink .ink-cue{opacity:0;transition-duration:.45s}
#paper-top[data-removing="true"] #resume-ink p,#paper-top[data-removing="true"] #resume-ink strong{opacity:var(--unfocused-opacity,.78);filter:blur(var(--unfocused-blur,5.2px));transition-duration:.45s;transition-delay:0s}
#paper-top[data-removing="true"] #resume-ink .ink-open,#paper-top[data-removing="true"] #resume-ink .ink-cue{opacity:0;filter:none}
#paper-top[data-revealed="true"]>span{cursor:pointer}
#paper-top[data-dragging="true"]>span{cursor:grabbing}
@media(prefers-reduced-motion:reduce){#resume-ink p,#resume-ink strong{transition:none}}

/* Atmospheric layers cannot intercept paper/glasses interactions. */
#paper-light,#paper-dust{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#paper-light{mix-blend-mode:normal}
#paper-dust{mix-blend-mode:screen;opacity:1;z-index:10}
.paper-object:focus-visible .glass-hit{background:#e9d3a30a;outline:1px solid #f4e8c8}
#paper-top:focus-visible{filter:brightness(1.045)}
.paper-lit-photo{position:absolute;inset:0;pointer-events:none;isolation:isolate}
.paper-lit-photo canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.paper-sun-plate{mix-blend-mode:plus-lighter}
.paper-desk-repair{mask-image:var(--paper-repair-mask);mask-size:100% 100%;mask-repeat:no-repeat}
.paper-source-ready{visibility:hidden}
#paper-light{display:none}
/* Stretch forearms away from their registered pinch points, beyond the viewport. */
#pickup-hands .pickup-left{transform-origin:38% 43%;transform:translate(var(--hand-left-x),var(--hand-left-y)) scale(1.18,1.28)}
#pickup-hands .pickup-right{transform-origin:62.5% 43%;transform:translate(var(--hand-right-x),var(--hand-right-y)) scale(1.18,1.28)}

#paper-scene{isolation:isolate}
#paper-stack,#paper-top,#inspect-paper{z-index:2}
#paper-glasses{z-index:8}
#pickup-hands{z-index:13}
#paper-glasses[data-held="true"]{z-index:12}
#pen-desk-repair{position:absolute;inset:0;pointer-events:none;mask-size:100% 100%;mask-repeat:no-repeat;z-index:1}
.pen-object{z-index:5;filter:drop-shadow(.7px 2px 1px #0a0909a0)}
.pen-object span{cursor:pointer}
.pen-object .pen-body{position:absolute;overflow:hidden;pointer-events:none;transform-origin:50% 50%}
#paper-scene .pen-body img{position:absolute;width:400%;height:200%;max-width:none;object-fit:fill;filter:brightness(var(--pen-sheen,.76)) saturate(.72);pointer-events:none}
.pen-object[data-rolling="true"]{z-index:7}
.pen-object[data-displaced="true"]{filter:drop-shadow(1px 3px 1.5px #100b0980)}
.pen-object:focus-visible{filter:drop-shadow(0 0 3px #f2dab9) brightness(1.12)}
.pen-object[data-settling="true"]{transition:transform .45s cubic-bezier(.22,.7,.18,1),filter .2s}
@media(prefers-reduced-motion:reduce){.pen-object[data-settling="true"]{transition:none}}

#paper-atmosphere-toggle{position:absolute;left:max(88px,calc(env(safe-area-inset-left) + 72px));bottom:max(22px,env(safe-area-inset-bottom));min-height:44px;padding:8px 10px;background:transparent;color:#ded5bd;font:12px 'Songti SC',serif;letter-spacing:.1em;text-shadow:0 1px 5px #000;opacity:.85;z-index:3}
#paper-atmosphere-toggle:focus-visible{outline:1px solid #ded5bd;outline-offset:2px}
#paper-atmosphere-toggle:disabled{opacity:0;pointer-events:none}
