/* Shared safe-area viewport; overlays scroll internally, gameplay does not. */
/* Result presentation owns its frame; no image slices or oversized ornaments. */
.phone #result{padding:16px;box-sizing:border-box;}
.phone #result>.result-dialog{box-sizing:border-box;width:min(100%,420px);max-width:100%;max-height:100%;min-height:0;margin:auto;padding:22px 18px;background:#0c1012!important;background-image:none!important;border:1px solid #abb5ba!important;border-image:none!important;border-radius:20px;box-shadow:0 12px 36px #0008;overflow:auto;transform:none;}
.phone #result>.result-dialog::before,.phone #result>.result-dialog::after,.phone #result .nh-corners{display:none!important;}
.phone #result #settlement,.phone #result #resultMoneyFlow{display:none!important;}
.phone #result #resultTitle{font-size:28px;margin:8px 0;}
.phone #result #resultMessage{font-size:15px;line-height:1.5;margin:12px 0 18px;overflow-wrap:anywhere;}
.phone #result .result-actions{display:grid;gap:10px;margin:0;}
.phone #result .result-actions button{min-height:48px;font-size:17px;padding:10px;}
.phone #result.is-result-intro{background:#0007;backdrop-filter:blur(3px);pointer-events:auto;}
.phone #result.is-result-intro>.result-dialog{display:block;visibility:visible;opacity:1;}
.phone #result.is-result-intro .result-actions,.phone #result.is-result-intro #resultMessage{display:none;}
@property --avatar-led-angle{syntax:"<angle>";inherits:false;initial-value:0deg;}
@keyframes avatar-rainbow-led{to{--avatar-led-angle:360deg;}}
#gameScreen .character-avatar.is-current-turn,
#gameScreen .character-avatar[data-turn-active="true"]{outline:none;border-color:transparent!important;box-shadow:none;animation:none;overflow:visible;}
#gameScreen .character-avatar.is-current-turn::after,
#gameScreen .character-avatar[data-turn-active="true"]::after{
 content:"";display:block;position:absolute;inset:-4px;padding:3px;border:0;border-radius:16px;z-index:5;pointer-events:none;
 background:conic-gradient(from var(--avatar-led-angle),#ff537e,#ffb348,#ffef77,#6bf6a2,#53deff,#9475ff,#f47aff,#ff537e);
 -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
 -webkit-mask-composite:xor;mask-composite:exclude;
 filter:drop-shadow(0 0 3px #a8b8ff88);animation:avatar-rainbow-led 3s linear infinite;
}
#gameScreen .character-avatar:focus-visible{outline:2px solid #fff;outline-offset:6px;}
@media(prefers-reduced-motion:reduce){#gameScreen .character-avatar::after{animation:none!important;}}
.preview-shell{height:100vh;height:var(--visual-height,100vh);}
/* Explicit fallbacks for Android WebViews without container/viewport units. */
.legacy-webview .lobby-artboard:not(.debug-layout){--lobby-avatar:88px;}
.legacy-webview .lobby-artboard .sq-lobby-avatar{width:88px;height:88px;}
.legacy-webview .lobby-artboard .sq-actions #mainSoloButton{height:60px;}
@media(max-height:700px){
 .legacy-webview .lobby-artboard:not(.debug-layout){--lobby-avatar:64px;padding-top:56px;}
 .legacy-webview .lobby-artboard .sq-lobby-avatar{width:64px;height:64px;}
 .legacy-webview .lobby-artboard .sq-tagline,.legacy-webview .lobby-artboard .nh-lobby-poem{display:none;}
}
.phone,.phone[data-size=compact]{transform:none;overflow:hidden;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);}
#gameScreen.game-artboard{min-height:0;height:100%;}
#gameScreen .capture-count{position:absolute;inset:auto 0 0;height:20px;line-height:20px;font-size:14px;font-weight:600;text-align:center;color:#d9dfdf;z-index:30;pointer-events:none;}
@media(orientation:portrait){
 #gameScreen.game-artboard{grid-template-rows:44px 164px minmax(0,1fr) 154px 112px;}
}
@media(orientation:portrait) and (max-height:680px){#gameScreen.game-artboard{grid-template-rows:40px 140px minmax(0,1fr) 134px 104px;}}
@media(orientation:portrait) and (max-height:600px){#gameScreen.game-artboard{grid-template-rows:40px 132px minmax(0,1fr) 128px 84px;}}
.phone .overlay{max-height:100%;padding:8px;overflow:hidden;}
.phone .overlay>.dialog,.phone .interstitial-ad-dialog{min-width:0;max-width:min(760px,100%);max-height:100%;overflow-y:auto;overscroll-behavior:contain;}
.phone .dialog .close-button{position:sticky;top:0;flex-shrink:0;min-width:48px;min-height:48px;z-index:6;}
.phone .dialog input{font-size:16px;max-width:100%;}
.phone .dialog .character-grid{grid-template-columns:repeat(auto-fit,minmax(64px,1fr));}
.phone .dialog .quick-chat-grid{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));}
.phone .opening-setup-dialog,.phone .rules-guide-dialog{overflow:hidden;}
.phone .nh-opening-body,.phone .nh-rules-body{min-height:0;overflow:auto;}
.phone .nh-opening-footer{position:sticky;bottom:0;background:#080a0b;}
@media(orientation:landscape) and (min-width:500px){
 .phone-frame{width:min(100%,1180px);}
 #gameScreen.game-artboard{grid-template-columns:minmax(120px,19%) minmax(0,1fr) minmax(120px,19%);grid-template-rows:36px minmax(0,1fr) 86px;gap:2px 4px;padding:0 4px;}
 #gameScreen.game-artboard>.app-bar{grid-column:1 / -1;grid-row:1;}
 #gameScreen.game-artboard>.opponent,#gameScreen.game-artboard>.player{grid-row:2;grid-template-rows:114px minmax(0,1fr);padding:0 2px;gap:4px;}
 #gameScreen.game-artboard>.opponent{grid-column:1;}
 #gameScreen.game-artboard>.player{grid-column:3;}
 #gameScreen.game-artboard>.table-zone{grid-column:2;grid-row:2;}
 #gameScreen.game-artboard>.hand{grid-column:1 / -1;grid-row:3;}
 #gameScreen .opponent-hand{display:none;}
 #gameScreen #opponentCaptured,#gameScreen #playerCaptured{grid-row:2;grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr));}
 #gameScreen .sq-player-head{position:relative;display:grid;grid-template-columns:30px minmax(0,1fr);align-content:start;padding:0;gap:2px;}
 #gameScreen .character-avatar,#gameScreen #playerAvatar{width:28px;height:28px;min-width:0;}
 #gameScreen .sq-player-info{min-width:0;}
 #gameScreen .sq-name{height:24px;}
 #gameScreen #opponentName,#gameScreen #playerIdentityName{font-size:14px;}
 #gameScreen .sq-metrics{display:flex;flex-direction:column;align-items:flex-start;}
 #gameScreen #coins,#gameScreen #opponentCoins,#gameScreen #playerScore,#gameScreen #opponentScore{font-size:12px;line-height:18px;}
 #gameScreen #quickChatButton{position:absolute;bottom:0;left:0;height:48px;min-height:48px;width:100%;font-size:13px;}
 .phone .overlay>.dialog{padding:12px 16px;}
 .phone .dialog h2{font-size:21px;margin:4px 0 8px;}
 .phone .opening-setup-dialog .nh-opening-body{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
 .phone .opening-guide{grid-column:1 / -1;}
 .phone .nh-opening-footer{padding-top:4px;}
 #startupScreen img,#startupScreen .nacre-logo{height:min(180px,55dvh)!important;}
 #startupScreen p{bottom:12px;font-size:14px;}
}
