/* VX Product UX #35 — final working polish */
:root{--vx35-hit:36px}
.vxTableScroll{max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:inherit}
.vxTableScroll>table{min-width:680px}

/* Make all working modals predictable and prevent content from disappearing below the viewport. */
.vxOpsModal,.vxServerCenterCard,.vxNotifySettingsDialog,.vxOwnerRenewalModalPanel{overscroll-behavior:contain}
.vxOpsModalOverlay,.vxDossierOverlay,.vxServerCenterModal,.vxNotifySettingsModal{overscroll-behavior:none}

/* Server cards: keep actions readable instead of becoming tiny pills. */
.vxSrvQuickActions button,.vxSrvActionsGrid button,.vxSrvProblem button{min-height:var(--vx35-hit)}
.vxSrvPanelHead h4,.vxSrvIdentity b{overflow-wrap:anywhere}

/* Notifications: better density on normal screens and safe drawer height. */
#notify-panel.vxNotifyDrawer{max-height:min(78vh,720px)!important}
.vxNotifyDrawerList{overscroll-behavior:contain}
.vxNotifyRow button{min-height:32px}
.vxNotifyDetailActions button,.vxNotifySettingsOpen{min-height:36px}

/* Dossier: hero stays compact, actions do not push identity out. */
.vxDossier2HeroActions .vxOpsButton{min-height:34px}
.vxDossier2Identity{min-width:0}.vxDossier2Title h3{min-width:0;overflow-wrap:anywhere}

/* Consistent touch/focus behavior for the daily admin surfaces. */
.vxSrvCard button,.vxNotifyShell button,.vxOpsShell button,.vxDashShell button{touch-action:manipulation}
.vxSrvCard button:focus-visible,.vxNotifyShell button:focus-visible,.vxOpsShell button:focus-visible,.vxDashShell button:focus-visible{outline:2px solid rgba(85,145,255,.8);outline-offset:2px}

@media(max-width:900px){
  /* Reduce visual noise and preserve content width on tablets. */
  .vxSrvDetails,.vxOpsContent,.vxNotifyMain,.vxNotifySide{scrollbar-width:thin}
  .vxServerCenterModal,.vxOpsModalOverlay,.vxDossierOverlay,.vxNotifySettingsModal{padding:10px!important}
  .vxServerCenterCard,.vxOpsModal,.vxNotifySettingsDialog{max-height:calc(100dvh - 20px)!important}
}
@media(max-width:720px){
  /* Servers */
  .vxSrvCardHead{padding:12px!important}.vxSrvDetails{padding:10px!important}
  .vxSrvHeadlineStats{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px!important}
  .vxSrvHeadlineStats span{padding:8px;border:1px solid rgba(120,145,180,.13);border-radius:9px;background:rgba(255,255,255,.02)}
  .vxSrvQuickActions{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .vxSrvQuickActions button{white-space:normal;line-height:1.15}
  .vxSrvConfig label{grid-template-columns:1fr!important;gap:4px!important}.vxSrvToken{width:100%}
  .vxSrvConfigActions{display:grid!important;grid-template-columns:1fr}.vxSrvConfigActions button{width:100%}
  /* Notifications */
  body.vx-authenticated #notify-panel.vxNotifyDrawer{top:58px!important;max-height:calc(100dvh - 70px)!important}
  .vxNotifyDrawerList{max-height:calc(100dvh - 132px)!important}
  .vxNotifyRow{padding:9px!important}.vxNotifyTitle{white-space:normal!important}.vxNotifyMessage{white-space:normal!important}
  .vxNotifyDetailHead{display:grid!important}.vxNotifyDetailGrid{grid-template-columns:78px minmax(0,1fr)!important}
  /* Dossier */
  .vxDossierOverlay .vxOpsModal{width:100%!important;max-height:calc(100dvh - 20px)!important;border-radius:14px!important}
  .vxDossier2Hero{gap:10px!important}.vxDossier2HeroActions{display:grid!important;grid-template-columns:1fr 1fr;width:100%}
  .vxDossier2HeroActions .vxOpsButton{width:100%;justify-content:center}
  .vxDossier2Tabs{margin-inline:-4px;padding-inline:4px}.vxDossier2Tabs button{min-height:36px}
}
@media(max-width:520px){
  .vxSrvQuickActions{grid-template-columns:1fr 1fr!important}.vxSrvQuickActions button:last-child{grid-column:1/-1}
  .vxDossier2HeroActions{grid-template-columns:1fr!important}
  .vxNotifyMain,.vxNotifySide{padding:10px!important}
  .vxNotifyFilters{gap:7px!important}.vxNotifyCategories{overflow:auto;flex-wrap:nowrap!important;padding-bottom:3px}
  .vxNotifyCategories button{white-space:nowrap}
  .vxServerCenterActions{grid-template-columns:1fr!important}
}
