/* A single place for the reading layout and touch targets across phone and PC. */
.game-scene.actor-stage{grid-template-rows:minmax(150px,1fr) auto auto}
.game-scene .game-tools{grid-row:3;position:relative;z-index:12;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:6px 28px calc(6px + env(safe-area-inset-bottom,0px));background:#1b1010}
.game-scene .game-tools .sound-dock{position:static;margin:0;width:auto;min-width:0;flex:1;max-width:360px}
.game-scene .sound-bar{height:auto;gap:4px}.game-scene .sound-toggle,.game-scene .sound-settings{min-height:44px}.game-scene .sound-settings{min-width:44px}
.game-scene .sound-panel{left:20px;bottom:calc(100% + 8px)}
.game-scene .game-tools .interaction-rail{position:static;gap:12px;flex-shrink:0}.game-scene .interaction-buttons{gap:8px}
.game-scene .interaction-button,.game-scene .whisper-button{min-width:48px;min-height:44px;justify-content:center;padding:4px 8px}.game-scene .interaction-button small{display:block;font:12px var(--sans)}
.game-scene .romance-touch{bottom:calc(var(--dialogue-height,240px) + var(--tools-height,64px))}
.game-scene.actor-stage .dialogue-card{grid-template-columns:minmax(0,1fr) auto;column-gap:16px;padding:14px max(28px,5vw) 10px;scroll-padding-bottom:58px}
.game-scene .dialogue-heading{grid-column:1;grid-row:1;margin:0 0 8px;align-self:center;min-height:40px;gap:14px}.game-scene .dialogue-heading strong{font-size:24px}
.game-scene .actor-chat{grid-column:2;grid-row:1;margin:0;align-self:start}.game-scene .actor-chat-open{font:13px var(--serif);min-height:44px;padding:8px 10px;white-space:nowrap}
.game-scene .actor-chat:has(form:not([hidden])){grid-column:1/-1;grid-row:auto;max-width:none;margin-top:8px}.game-scene .actor-chat input{font-size:16px;min-height:46px}.game-scene .actor-chat button[type=submit]{min-height:46px;min-width:64px}
.game-scene .dialogue-scroll,.game-scene .dialogue-actions,.game-scene .actor-choices,.game-scene .actor-dialogue-hint{grid-column:1/-1}
.game-scene[data-typing=false] .actor-dialogue-hint{display:none}
.game-scene .dialogue-controls{grid-column:1/-1;grid-row:auto;position:sticky;bottom:-1px;z-index:2;max-width:none;min-height:48px;gap:8px;flex-wrap:nowrap;justify-content:flex-start;margin-top:8px;background:#251216;padding:4px 0 0;border-top:1px solid #bea07835}
.game-scene .dialogue-controls .icon-button,.game-scene .voice-toggle{min-width:44px;min-height:44px;font-size:13px}.game-scene .dialogue-controls>span{font-size:12px;white-space:nowrap}.game-scene .dialogue-controls .button{margin-left:auto;min-height:44px;padding:8px 14px;border:0;font-size:15px}
.game-scene .dialogue-actions>button{min-height:36px;padding:6px 10px;font-size:13px}
.ambient-hearts{position:fixed;left:0;right:0;z-index:18;pointer-events:none;overflow:hidden;contain:layout paint;transition:opacity 160ms ease-out}.ambient-hearts[hidden]{display:none}.ambient-hearts>span{position:absolute;bottom:-30px;left:var(--heart-x);width:var(--heart-size);height:var(--heart-size);color:#a24f64;opacity:0;animation:ambient-heart-float var(--heart-time) linear var(--heart-delay) infinite;pointer-events:none}.ambient-hearts svg{width:100%;height:100%;stroke-width:1.4;fill:currentColor;fill-opacity:.12}.in-game .ambient-hearts>span{color:#efb2b7}
@keyframes ambient-heart-float{0%{opacity:0;transform:translate3d(0,0,0) rotate(-10deg)}12%{opacity:.4}82%{opacity:.28}100%{opacity:0;transform:translate3d(var(--heart-drift),-95vh,0) rotate(14deg)}}
.ambient-hearts[data-paused=true]>span{animation-play-state:paused}.ambient-hearts[data-paused=true]{opacity:.25}
.ambient-control{display:flex;align-items:center;justify-content:flex-start;gap:8px;min-height:44px;font-size:12px}.ambient-control svg{width:17px;height:17px;flex-shrink:0}.scene-menu .ambient-control{width:100%;color:inherit}.auth-form-wrap>.ambient-control{margin-top:12px;color:#87505b}.nav-more .ambient-control{width:100%}
#login-form input,.stack-form input{font-size:16px;min-height:50px}#login-form label{font-size:14px}#login-form>.button{min-height:50px;font-size:15px}.auth-intro{font-size:14px;line-height:1.8}.auth-footer{font-size:12px;line-height:1.8}.auth-form-wrap>.form-error,.auth-form-wrap .form-error{font-size:13px!important}.auth-panel{position:relative;z-index:1}
@media(max-width:800px){
 .game-scene.actor-stage{grid-template-rows:minmax(130px,1fr) auto auto}
 .game-scene.actor-stage .dialogue-card{padding:10px 18px 8px;column-gap:8px;max-height:min(45dvh,calc(var(--game-height)*.45))}
 .game-scene .dialogue-heading{min-height:40px;margin-bottom:3px;gap:10px}.game-scene .dialogue-heading strong{font-size:22px;letter-spacing:2px}.game-scene .dialogue-heading:after{display:none}.game-scene .source-chip{font-size:11px;min-height:40px;max-width:110px;text-align:left}
 .game-scene .actor-chat-open{font-size:12px;padding:8px 0 8px 8px}.game-scene .dialogue-scroll{max-height:96px}.game-scene .dialogue-scroll>p{font-size:17px;line-height:1.65}.game-scene .actor-choices{gap:8px;margin-top:8px}.game-scene .actor-choices button{font-size:15px;padding:9px 28px 9px 12px;min-height:44px}.game-scene .actor-choices button:after{right:10px}
 .game-scene .dialogue-controls{margin-top:7px;gap:4px}.game-scene .dialogue-controls .button{padding:8px 10px}.game-scene .game-tools{gap:8px;padding:6px 10px calc(6px + env(safe-area-inset-bottom,0px));min-height:62px}.game-scene .sound-toggle{font-size:11px;padding:4px}.game-scene .sound-track{display:none}.game-scene .game-tools .interaction-rail{gap:4px}.game-scene .interaction-buttons{gap:2px}.game-scene .interaction-button{flex-direction:column;gap:2px;padding:3px 5px;min-width:44px}.game-scene .interaction-button small{font-size:10px}.game-scene .interaction-button svg{width:20px;height:20px}.game-scene .whisper-button{font-size:11px;padding:4px;min-width:54px}.game-scene .sound-panel{left:10px;bottom:calc(100% + 4px)}
}
@media(max-width:550px){.auth-page{min-height:100svh}.auth-art{height:190px;background:#291c19}.auth-art>.portrait{left:auto;right:0;width:51%;height:100%}.auth-art:after{background:linear-gradient(90deg,#291c19 0%,#291c1950 55%,transparent)}.auth-art>div:last-child{left:24px;bottom:28px;max-width:52%}.auth-art h1{font-size:27px;letter-spacing:2px}.auth-art p{font-size:12px;line-height:1.8;letter-spacing:0}.auth-panel{padding:20px 24px 28px}.auth-form-wrap>h1{font-size:28px;margin:8px 0 12px}.auth-intro{font-size:13px;margin-bottom:22px}#login-form{gap:16px}.auth-footer{margin-top:12px;padding-top:14px}.ambient-hearts>span:nth-child(n+9){display:none}}
@media(max-height:620px){.game-scene.actor-stage{grid-template-rows:minmax(90px,1fr) auto auto}.game-scene.actor-stage .dialogue-card{max-height:min(54dvh,calc(var(--game-height)*.54));padding-top:6px}.game-scene .dialogue-heading{min-height:34px}.game-scene .dialogue-heading strong{font-size:20px}.game-scene .dialogue-scroll{max-height:66px}.game-scene .dialogue-scroll>p{font-size:16px}.game-scene .game-tools{min-height:54px;padding-top:2px;padding-bottom:2px}.auth-art{height:145px}.auth-art>div:last-child{bottom:18px}}
@media(prefers-reduced-motion:reduce){.ambient-hearts{transition:none}.ambient-hearts>span{animation:none;bottom:var(--rest-y);opacity:.16;transform:none}}
@media(max-width:550px){.ambient-hearts>span[data-side=left]{left:2px}.ambient-hearts>span[data-side=right]{left:auto;right:2px}}
@media(min-width:801px) and (max-height:620px){.game-scene.actor-stage{grid-template-rows:minmax(150px,1fr) auto auto}.game-scene.actor-stage .dialogue-card{max-height:calc(var(--game-height) - 52px - 56px - 150px)}}
.in-game #toast{top:8px;bottom:auto;left:50%;transform:translateX(-50%);padding:8px 14px;max-width:min(340px,calc(100vw - 36px));pointer-events:none}

.game-scene .dialogue-controls>span:after{content:" 句";font-size:11px}

.auth-intro,.auth-footer{color:#6f625c}#login-form input::placeholder{color:#796960}
