/* Shared PWA layout: every rule is scoped to the installed app. */
.pwa-app {
  --pwa-viewport-height: 100dvh;
  --pwa-header-height: calc(clamp(48px, 12vw, 54px) + env(safe-area-inset-top, 0px));
  --pwa-header-space: var(--pwa-header-height);
  --pwa-nav-height: calc(64px + env(safe-area-inset-bottom, 0px));
  --pwa-bottom-space: var(--pwa-nav-height);
  --pwa-batch-space: 0px;
  --pwa-viewport-top: 0px;
  scroll-padding-top: calc(var(--pwa-header-space) + 12px);
  scroll-padding-bottom: calc(var(--pwa-bottom-space) + 16px);
}
.pwa-app body { box-sizing:border-box; padding-top:var(--pwa-header-space) !important; padding-bottom:calc(var(--pwa-bottom-space) + var(--pwa-batch-space)) !important; }
.pwa-app .pwa-topbar,.pwa-app .pwa-tabbar { z-index:1000; }
.pwa-app #pwaSkeleton.on { z-index:995; top:var(--pwa-header-space); bottom:var(--pwa-bottom-space); }
.pwa-app .pwa-tab { min-height:48px; touch-action:manipulation; }
.pwa-app .pwa-top-back { min-width:44px; min-height:44px; }
.pwa-app .pwa-top-context { display:flex; align-items:center; justify-content:center; min-width:56px; min-height:44px; padding:0 10px; font-size:12px; text-decoration:none; color:#2563eb; }
.pwa-app :focus-visible { outline:2px solid #2563eb; outline-offset:3px; }
.pwa-app .seller-shell { min-height:calc(var(--pwa-viewport-height) - var(--pwa-header-space) - var(--pwa-bottom-space)); }
.pwa-app .seller-aside { top:var(--pwa-header-space); min-height:0; }
.pwa-app .tc-container { box-sizing:border-box; margin-inline:0 !important; max-width:100%; }
.pwa-app.tc-page .tc-container { padding-top:env(safe-area-inset-top,0px); }
.pwa-app .tc-container,.pwa-app .stc-container { min-height:0 !important; }
.pwa-app #vue-seller-ticket-center:empty { min-height:0; }
.pwa-app .sp-modal-overlay,.pwa-app .modal,.pwa-app .stc-modal-overlay {
  box-sizing:border-box; padding-top:max(12px,env(safe-area-inset-top,0px)); padding-bottom:max(12px,env(safe-area-inset-bottom,0px));
}
.pwa-app .sp-modal { max-height:calc(var(--pwa-viewport-height) - 32px); display:flex; flex-direction:column; }
.pwa-app .sp-modal__header,.pwa-app .sp-modal__footer { flex-shrink:0; }
.pwa-app .sp-modal__body { overflow:auto; min-height:0; overscroll-behavior:contain; }
.pwa-app .sp-group-dialog .sp-modal__body { max-height:calc(var(--pwa-viewport-height) - 200px) !important; }
.pwa-app .table-responsive { overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; }
.pwa-app .pf__nav { top:var(--pwa-header-space) !important; }
.pwa-app #sw-update-bar { bottom:var(--pwa-bottom-space) !important; padding:12px 16px !important; gap:6px; flex-wrap:wrap; }
@media(max-width:899px) {
 .pwa-app body { padding-left:env(safe-area-inset-left,0px); padding-right:env(safe-area-inset-right,0px); }
 .pwa-app .pwa-topbar { padding-left:env(safe-area-inset-left,0px); padding-right:env(safe-area-inset-right,0px); }
 .pwa-app .pwa-tabbar { padding-left:env(safe-area-inset-left,0px); padding-right:env(safe-area-inset-right,0px); }
 .pwa-app input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),.pwa-app textarea,.pwa-app select { font-size:16px !important; }
 .pwa-app.pwa-keyboard-open .pwa-tabbar,.pwa-app.pwa-keyboard-open .pd-buybar { display:none !important; }
 .pwa-app.pwa-keyboard-open .sp-modal-overlay,.pwa-app.pwa-keyboard-open .modal {
   top:var(--pwa-viewport-top); bottom:auto; height:var(--pwa-viewport-height);
 }
 .pwa-app.pwa-keyboard-open .modal-dialog { margin-top:0; margin-bottom:0; }
 .pwa-app.pwa-keyboard-open .modal-content { max-height:calc(var(--pwa-viewport-height) - 24px); }
 .pwa-app.pwa-keyboard-open .modal-body { overflow:auto; }
}
@media(min-width:900px) { .pwa-app #sw-update-bar { left:var(--pwa-side,216px) !important; } }
@media(prefers-reduced-motion:reduce) {
 .pwa-app body,.pwa-app .pwa-tab,.pwa-app .pwa-tab.tab-pop i,.pwa-app #pwaSkeleton * { animation:none !important; transition:none !important; }
 .pwa-app { scroll-behavior:auto !important; }
}

.pwa-app .site-wrapper { min-height:calc(var(--pwa-viewport-height) - var(--pwa-header-space) - var(--pwa-bottom-space)); }
.pwa-app .ud-page { padding-bottom:0; }

/* The app bar already names the page; keep product counts and actions. */
.pwa-app .sp-title h1,.pwa-app .sp-title-icon { display:none; }

/* Stable shell dimensions before fonts, Vue and viewport observers load. */
.pwa-app .pwa-topbar { box-sizing:border-box; height:var(--pwa-header-height); }
html.pwa-app .pf__editor-tabs { top:var(--pwa-header-space); }
html.pwa-app .pf__footer { position:static; bottom:auto; margin-top:16px; box-shadow:none; }
html.pwa-app .um-batch-bar { bottom:var(--pwa-bottom-space); width:calc(100% - 24px); box-sizing:border-box; }
html.pwa-app .um-top-btn { bottom:calc(var(--pwa-bottom-space) + var(--pwa-batch-space) + 16px); }
@media(max-width:899px) {
 .pwa-app .pwa-tabbar { box-sizing:border-box; height:var(--pwa-nav-height); }
 .pwa-app .pwa-tab { box-sizing:border-box; min-height:0; padding-top:6px; padding-bottom:6px; }
 .pwa-app .pwa-tab i { display:flex; align-items:center; justify-content:center; height:27px; line-height:27px; flex-shrink:0; }
}
@media(min-width:900px) {
 .pwa-app { --pwa-header-height:56px; --pwa-nav-height:0px; }
 html.pwa-app .um-batch-bar { left:calc(50% + var(--pwa-side,216px) / 2); max-width:calc(100% - var(--pwa-side,216px) - 24px); width:900px; }
}

/* Keep chat gestures inside the message list; do not resize around scroll anchoring. */
html.pwa-app #stc-container { overflow-anchor:none; }
html.pwa-app #stc-container .stc-messages,
html.pwa-app #stc-container .stc-sidebar__list,
html.pwa-app #stc-container textarea {
  overscroll-behavior-y:contain;
}
