.mobile-interaction{display:none}@media(max-width:767px){.hero-right .mobile-interaction{display:flex;align-items:center;min-height:44px;margin:14px 100px 0 20px;max-width:240px}.hero-right .mobile-interaction p{max-width:230px;font-size:9px;line-height:1.7;font-weight:400;color:#bcb6ca;text-align:left;margin:0}#mascot-stage.is-compact .mascot-character{cursor:pointer}.mascot-dock{overflow:visible}}

/* Keep Safari's portrait rasterization local, at its actual display size. */
#mascot-stage:not(.is-ready){visibility:hidden!important}
.mascot-art picture,.mascot-art picture img{display:block;width:100%;height:auto;user-select:none;pointer-events:none}
#mascot-companion{display:none}
@media(max-width:767px){
 #mascot-stage.is-compact{position:absolute;inset:0;width:auto;height:auto;transition:opacity .12s;contain:layout style}
 #mascot-stage.is-compact .mascot-character{width:230px;will-change:auto;backface-visibility:visible;transform:translate(var(--mascot-x),var(--mascot-y)) translate(-50%,-50%) rotate(var(--mascot-lean)) scale(var(--mascot-scale))}
 #mascot-stage.is-compact .mascot-art,#mascot-stage.is-compact .mascot-character:hover .mascot-art{filter:none;transition:none}
 #mascot-stage.is-compact .mascot-speech{left:50%;top:0;max-width:calc(100% - 20px);white-space:normal}
 body:not(.mascot-ready) .hero .mascot-dock:after{content:'人物加载中…';position:absolute;left:0;right:0;top:45%;text-align:center;color:#b0b0c0;font-size:11px}
 body.mascot-load-failed .hero .mascot-dock:after{content:'人物暂未载入'}
 .hero .chrome-light-field,.chrome-dot-field{filter:none;transform:none}
 .hero .chrome-orbit img,.hero .chrome-orbit:before{filter:none}
 .work .card-image .card-backdrop{filter:none;transform:none}
 .mobile-nav,.project-dialog::backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}
 /* One hero portrait and one small fixed companion: no reparenting on scroll. */
 #mascot-stage.is-mobile-home-hidden{opacity:0!important;visibility:hidden!important}
 .work .mascot-dock,.about .mascot-dock,.resume .mascot-dock,.contact .mascot-dock{display:none}
 .work-toolbar{margin-top:24px}
 .timeline{margin-top:28px}
 .contact-details{margin-top:38px}
 #mascot-companion{display:block;position:fixed;left:12px;bottom:calc(env(safe-area-inset-bottom,0px) + 68px);width:104px;z-index:30;pointer-events:none;opacity:0;visibility:hidden;transform:translateX(var(--companion-travel,0px));transition:transform .48s cubic-bezier(.22,.7,.3,1),opacity .16s,visibility .16s}
 #mascot-companion.is-visible{opacity:1;visibility:visible}
 #mascot-companion.is-on-left{transform:translateX(0)}
 #mascot-companion .companion-character{position:relative;left:auto;top:auto;width:104px;padding:0;display:block;transform:none;pointer-events:auto;outline-offset:4px;cursor:pointer;backface-visibility:visible;will-change:auto}
 #mascot-companion .mascot-art,#mascot-companion .companion-character:hover .mascot-art{filter:none;transition:none}
 #mascot-companion .mascot-speech{left:auto;right:0;top:auto;bottom:calc(100% + 10px);width:max-content;max-width:180px;white-space:normal;font-size:11px;line-height:1.6;padding:10px 13px;transform:translateY(6px);pointer-events:none}
 #mascot-companion .mascot-speech.is-visible{transform:translateY(0)}
 #mascot-companion.is-on-left .mascot-speech{left:0;right:auto}
 #mascot-companion .mascot-speech:after{left:auto;right:40px}
 #mascot-companion.is-on-left .mascot-speech:after{left:40px;right:auto}
 body.modal-open #mascot-companion,body.intro-open #mascot-companion{opacity:0!important;visibility:hidden!important}
}
