/* Global tooltip: a single fixed-position element on <body> that reads
   [data-tip]. Fixed positioning means no ancestor's overflow can ever clip it
   (unlike a CSS ::after tip). Multi-line tips render their newlines. */
.vx-tip{position:fixed;z-index:9999;max-width:22rem;padding:.5rem .625rem;border-radius:.5rem;background:#0f172a;color:#f8fafc;font-size:.75rem;line-height:1.2rem;white-space:pre-line;box-shadow:0 8px 24px rgba(2,6,23,.22);pointer-events:none;opacity:0;transition:opacity .12s ease;display:none}
.vx-tip strong{color:#fff}

/* Integrated thin scrollbar for scroll areas (matches the UI, not OS chrome). */
.vx-scroll{scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}
.vx-scroll::-webkit-scrollbar{width:9px;height:9px}
.vx-scroll::-webkit-scrollbar-track{background:transparent}
.vx-scroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:9999px;border:2px solid transparent;background-clip:content-box}
.vx-scroll::-webkit-scrollbar-thumb:hover{background:#94a3b8;background-clip:content-box}
.vx-scroll::-webkit-scrollbar-corner{background:transparent}

/* Dialog bodies and file panes must NEVER scroll sideways. Long paths, ids and
   shell one-liners wrap; anything genuinely un-wrappable scrolls inside its own
   .vx-x-scroll box. Setting overflow-y alone would silently make overflow-x
   scroll too. */
.vx-wrap{overflow-wrap:anywhere}
.vx-wrap pre,.vx-wrap code{white-space:pre-wrap;overflow-wrap:anywhere}
.vx-wrap table{width:100%;table-layout:fixed}
.vx-wrap .vx-x-scroll{overflow-x:auto;max-width:100%}
/* Inputs carry a ~20ch intrinsic width, which is what pushes two-column forms
   wider than the dialog on narrow viewports. */
.vx-wrap input,.vx-wrap select,.vx-wrap textarea{min-width:0;max-width:100%}
.vx-wrap .grid{min-width:0}

/* Loading feedback: slim top progress bar + submit spinner. */
#gm-progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--color-brand-600,#ea580c);z-index:10000;opacity:0;pointer-events:none;transition:width .2s ease-out}
@keyframes gm-spin{to{transform:rotate(360deg)}}
.gm-spin{display:inline-block;width:.85em;height:.85em;border:2px solid currentColor;border-top-color:transparent;border-radius:9999px;animation:gm-spin .6s linear infinite;vertical-align:-2px}
