/* The vertex menu: destinations on the points of the cockpit's shape (vertex-menu.js). (c) 2026 BANKON — Apache-2.0 */
.dvv{position:relative}
.dvv__ring{position:absolute;inset:0;z-index:4;pointer-events:none}
.dvv__ring .dvv__i{pointer-events:auto}
.dvv__ring .dvv__i.is-off{pointer-events:none}
.dvv__shape{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.dvv__shape polygon{fill:none;stroke:#2EE88A;stroke-width:1.2;stroke-dasharray:5 7;opacity:.55;transition:all .9s cubic-bezier(.6,0,.3,1)}
.dvv__i{position:absolute;left:0;top:0;z-index:4;transform:translate(calc(var(--x,50%) - 50%),calc(var(--y,50%) - 50%));
  display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border:1px solid rgba(46,232,138,.55);border-radius:22px;
  background:rgba(4,10,8,.82);color:#E8F5EE;font:600 13px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase;
  text-decoration:none;white-space:nowrap;transition:transform .9s cubic-bezier(.6,0,.3,1),opacity .5s,border-color .2s,background .2s}
.dvv__i::before{content:"";width:7px;height:7px;border-radius:50%;background:#2EE88A;box-shadow:0 0 8px #2EE88A}
.dvv__i:hover,.dvv__i:focus-visible{border-color:#2EE88A;background:rgba(12,38,24,.95);outline:none}
.dvv__i:focus-visible{box-shadow:0 0 0 3px rgba(46,232,138,.45)}
.dvv__i.is-off{opacity:0;pointer-events:none}
.dvv__i[data-dvt-owner]{border-color:#D4AF37;color:#F2D675}
.dvv__i[data-dvt-owner]::before{background:#D4AF37;box-shadow:0 0 8px #D4AF37}
.dvv__i[hidden]{display:none!important}   /* a point the viewer may not see (thrust-guard: [data-dvt-vip]) */
.dvv__dim{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);margin:0;font:10.5px/1.4 ui-monospace,Menlo,Consolas,monospace;
  letter-spacing:.2em;text-transform:uppercase;color:#7DB596;white-space:nowrap;pointer-events:none}

/* the landing's ignition deck: the contract and Ignition at the centre, the menu on the points around them */
.dvv--deck{min-height:0;display:flex;align-items:center;justify-content:center;max-width:1180px;margin:0 auto;padding:24px 16px 40px}
.dvv--deck .dvv__core{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;gap:10px;width:min(620px,100%)}
.dvv--deck .dvv__target{position:absolute;left:50%;top:50%;z-index:1;width:clamp(180px,22vw,260px);height:auto;transform:translate(-50%,-50%);opacity:.5;pointer-events:none}

/* the cockpit: an overlay on the canopy; only the chips take the pointer */
.dvv--canopy{position:absolute;inset:0;z-index:5;pointer-events:none}
.dvv--canopy .dvv__i{pointer-events:auto}
.dvv--canopy .dvv__i.is-off{pointer-events:none}

/* phones: every destination as a grid of chips under the centre, even rows, nothing re-flows as the shape cycles */
.dvv.is-list{flex-direction:column;min-height:0;padding-bottom:16px}
.dvv.is-list .dvv__ring{position:relative;inset:auto;pointer-events:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px;
  width:100%;margin-top:16px;z-index:3}
.dvv.is-list .dvv__i{position:static;transform:none;justify-content:center}
.dvv.is-list .dvv__i.is-off{display:none}
.dvv.is-list .dvv__dim{position:static;transform:none;margin-top:10px;text-align:center;white-space:normal}
@media (max-width:560px){.dvv--canopy .dvv__i{padding:0 10px;font-size:11px}}
@media (prefers-reduced-motion:reduce){.dvv__i,.dvv__shape polygon{transition:none}}
/* phones (v1.3.7): nothing reads under 12 px. Every rule above that sets a smaller size, at 12 px under 640 px
   (the same selectors, so the same weight; written from this sheet's own rules) */
@media (max-width:640px){.dvv__dim,.dvv--canopy .dvv__i{font-size:12px}}
/* the flight deck's first view: two choices, no shape drawn between them */
.dvv.is-few .dvv__shape{opacity:0}
