/* V — independent Shared floating utility control. It belongs to H and never participates in Header/Y/Z/Q geometry. */
.v2-app{--v2-v-bottom:36px}

/* Keep V above the shared bottom action stack instead of overlapping it. */
.v2-app:has(:is([data-v2-z-body],[data-v2-q-body]) .modal-actions:not([hidden])>:nth-child(1 of :not([hidden]))){--v2-v-bottom:88px}
.v2-app:has(:is([data-v2-z-body],[data-v2-q-body]) .modal-actions:not([hidden])>:nth-child(2 of :not([hidden]))){--v2-v-bottom:144px}
.v2-app:has(:is([data-v2-z-body],[data-v2-q-body]) .modal-actions:not([hidden])>:nth-child(3 of :not([hidden]))){--v2-v-bottom:200px}
.v2-app:has(:is([data-v2-z-body],[data-v2-q-body]) .modal-actions:not([hidden])>:nth-child(4 of :not([hidden]))){--v2-v-bottom:256px}

/* Q lives in a viewport portal outside .v2-app. Mirror the same action-stack offset there. */
body:has([data-v2-layer][data-v2-q="true"] [data-v2-q-body] .modal-actions:not([hidden])>:nth-child(1 of :not([hidden]))) .v2-app.has-v2-q-modal{--v2-v-bottom:88px}
body:has([data-v2-layer][data-v2-q="true"] [data-v2-q-body] .modal-actions:not([hidden])>:nth-child(2 of :not([hidden]))) .v2-app.has-v2-q-modal{--v2-v-bottom:144px}
body:has([data-v2-layer][data-v2-q="true"] [data-v2-q-body] .modal-actions:not([hidden])>:nth-child(3 of :not([hidden]))) .v2-app.has-v2-q-modal{--v2-v-bottom:200px}
body:has([data-v2-layer][data-v2-q="true"] [data-v2-q-body] .modal-actions:not([hidden])>:nth-child(4 of :not([hidden]))) .v2-app.has-v2-q-modal{--v2-v-bottom:256px}

.v2-v-host{
  position:absolute;
  z-index:1301;
  inset:0;
  pointer-events:none;
}
.v2-v-host[hidden]{display:none}
.v2-v{
  position:absolute;
  left:36px;
  bottom:calc(var(--v2-v-bottom) + env(safe-area-inset-bottom));
  box-sizing:border-box;
  width:48px;
  height:48px;
  border:0;
  padding:5px;
  display:grid;
  place-items:center;
  background:transparent;
  cursor:pointer;
  pointer-events:auto;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  transition:bottom .16s ease;
}
.v2-v__medallion{
  width:38px;
  height:38px;
  display:block;
  overflow:visible;
  transform:rotate(-4deg);
  transform-origin:50% 50%;
  filter:drop-shadow(0 7px 10px rgba(0,0,0,.28)) drop-shadow(0 2px 7px rgba(255,255,0,.16));
  transition:transform .14s ease,filter .14s ease;
}
.v2-v:active .v2-v__medallion{
  transform:rotate(-6deg) translateY(1px) scale(.94);
  filter:drop-shadow(0 4px 7px rgba(0,0,0,.24)) drop-shadow(0 1px 9px rgba(255,255,0,.28));
}
.v2-v:focus-visible{outline:2px solid var(--v2-yellow);outline-offset:0;border-radius:14px}
.v2-app.is-deck-open .v2-v,
.v2-app.has-v2-modal:not(.has-v2-q-modal) .v2-v,
html.keyboard-open .v2-v{visibility:hidden;pointer-events:none}

@media(max-width:360px){
  .v2-app{--v2-v-bottom:32px}
  .v2-v{left:32px}
}
