/* v22.2: flow-based layouts, including short landscape viewports. */
html,body{height:100%;overflow-x:hidden;overflow-y:auto}
.app{height:auto;min-height:100vh;max-width:1440px;margin:0 auto;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
@supports (height:100dvh){.app{min-height:100dvh}}
.topbar{min-height:56px;height:auto;padding:4px 0;flex-wrap:wrap}
.brand,.topstat{flex-shrink:0;max-width:100%}
.hero{grid-template-columns:minmax(140px,1fr) minmax(270px,1.5fr) minmax(140px,1fr);grid-template-rows:auto;gap:16px;min-height:540px}
.side{position:static;width:auto;min-width:0;z-index:auto}
.side .panel.secondary{display:block}
.stage{grid-row:auto;min-height:540px;height:100%;transform:none;touch-action:pan-y}
.phone{width:260px!important;height:500px!important;min-width:0!important;min-height:0!important}
.cmdbar{height:auto!important;min-height:72px;flex-wrap:wrap;overflow:visible;justify-content:center!important;padding:12px 144px 12px 0!important}
.action,.dashboardAction,.keepActiveBtn,.sheetClose,.close,.voiceFloat,.voiceEndBtn,.voiceTranscriptClose{min-height:44px!important}
.dashboardAction{width:44px!important;min-width:44px!important}
.voiceFloat{right:max(16px,env(safe-area-inset-right))!important;bottom:var(--safeB)!important}
.voiceTranscript{width:calc(100% - 24px)!important;max-width:720px;max-height:50vh;overflow-y:auto;bottom:calc(var(--safeB) + 60px)!important}
.deviceSheetCard{max-height:calc(100vh - var(--safeT) - var(--safeB) - 24px);overflow-y:auto;overscroll-behavior:contain}
@supports(height:100dvh){.deviceSheetCard{max-height:calc(100dvh - var(--safeT) - var(--safeB) - 24px)}}
.deviceSheetTop{position:sticky;top:-18px;background:#0d1010;z-index:2;padding:8px 0}
.sheetClose{flex-shrink:0}
.pair{overflow-y:auto;align-items:flex-start;padding-top:var(--safeT);padding-bottom:var(--safeB)}
.pairbox{margin:auto;flex-shrink:0}
.pairbox input{font-size:16px}
.avatarHUD{max-width:min(430px,84%);bottom:calc(var(--safeB) + 64px)!important}
.avatarHUD h1{font-size:clamp(26px,5vw,38px)!important}
.avatarHUD p{font-size:clamp(13px,2.5vw,18px)!important}
.toast{max-width:calc(100% - 24px);text-align:center;bottom:calc(var(--safeB) + 64px)}
@media(max-width:719px){
 .hero{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto auto;gap:10px;min-height:0;padding-top:12px}
 .side.left{grid-column:1;grid-row:1}.side.right{grid-column:2;grid-row:1}
 .side .panel{padding:12px;height:100%}.side .panel.secondary{display:none}
 .stage{grid-column:1/-1;grid-row:2;min-height:490px;transform:none}
 .phone{width:240px!important;height:460px!important;transform:none!important}
 .bigv{font-size:22px}.eyebrow{letter-spacing:.08em;overflow-wrap:anywhere}
 .halo,.ring{width:280px;max-width:95%}
 .cmdbar{padding:12px 0 64px!important;gap:8px!important;justify-content:center!important}
 .action{padding:0 10px!important;gap:6px!important}
 .deviceAction{min-width:70px!important}
 .deviceSheetTop{top:-14px}.deviceSheetTitle{font-size:20px}
 .vtUser,.vtReply{font-size:18px!important;overflow-wrap:anywhere}
 .keepNote{overflow-wrap:anywhere}
}
@media(max-width:479px){
 .topbar{gap:10px}.topstat{width:100%;justify-content:space-between}
 .brand{width:100%}.stage{min-height:450px}
 .phone{width:225px!important;height:420px!important}
 .brandline{flex-wrap:wrap}
}
@media(min-width:720px) and (max-height:650px){
 .hero{min-height:460px}.stage{min-height:460px}
 .phone{width:225px!important;height:420px!important}
}
@media(max-height:450px){
 .avatarHUD{left:4%;max-width:65%}.avatarHUD h1{margin:4px 0!important;font-size:26px!important}
 .avatarHUD p{margin:6px 0!important;font-size:13px!important}
 .voiceTranscript{max-height:55vh}
}
@media(prefers-reduced-motion:reduce){.ring,.halo,.scan,.digits,.statepulse,.phone.thinking,.voicewaves i{animation:none!important}}
