.vmg-page{--vmg-panel:var(--sa-surface-sunken,#1f1e1c);--vmg-panel-2:var(--sa-surface-deep,#1a1a1a);--vmg-rim:var(--sa-border-card,rgba(255,255,255,0.14));--vmg-line:var(--sa-border-subtle,rgba(255,255,255,0.1));--vmg-text:#f2efe9;--vmg-muted:var(--sa-text-muted,#aeaeae);--vmg-gold:#d4af37;max-width:1280px;margin:0 auto;padding:0 16px 40px;color:var(--vmg-text)}.vmg-page,.vmg-page *,.vmg-page :after,.vmg-page :before{box-sizing:border-box}.vmg-head{background:var(--vmg-panel);border:1px solid var(--vmg-rim);border-radius:10px;padding:16px;margin:12px 0 16px}.vmg-head h1{font-size:1.5rem;margin:0 0 6px;color:var(--vmg-text)}.vmg-head p{margin:0;color:var(--vmg-muted);line-height:1.5}.vmg-faq a,.vmg-head a{color:var(--vmg-gold)}.vmg-tool{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}.vmg-out__block,.vmg-panel,.vmg-preview{background:var(--vmg-panel);border:1px solid var(--vmg-rim);border-radius:10px;padding:12px;min-width:0}.vmg-preview__frame{position:relative;aspect-ratio:16/9;border-radius:8px;overflow:hidden;background:radial-gradient(ellipse at 50% 35%,#56606a 0,#2b3036 55%,#16181b 100%)}.vmg-preview__xh{position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;pointer-events:none;background:linear-gradient(#39ff6a,#39ff6a) 50% /2px 100% no-repeat,linear-gradient(#39ff6a,#39ff6a) 50% /100% 2px no-repeat}.vmg-2d{display:block;width:100%;height:100%}.vmg-2d__gun{fill:#1b1d20;stroke:#8a929b;stroke-width:.6}.vmg-2d__arm{fill:#3d4b3a;stroke:#7b8a76;stroke-width:.6}.vmg-stage3d,.vmg-stage3d__host{position:absolute;inset:0}.vmg-stage3d__host--left{transform:scaleX(-1)}.vmg-stage3d__load{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);padding:4px 10px;border-radius:999px;background:rgba(0,0,0,.6);color:var(--vmg-text);font-size:.8125rem;white-space:nowrap}.vmg-guns{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.vmg-chip,.vmg-copy,.vmg-reset,.vmg-seg button{min-height:36px;padding:6px 12px;border-radius:6px;border:1px solid var(--vmg-rim);background:var(--vmg-panel-2);color:var(--vmg-text);font-size:.875rem;cursor:pointer}.vmg-chip[aria-pressed=true],.vmg-seg button[aria-pressed=true]{border-color:var(--vmg-gold);color:var(--vmg-gold);background:rgba(212,175,55,.12)}.vmg-chip--act{margin-left:auto}.vmg-note{margin:8px 0 0;color:var(--vmg-muted);font-size:.8125rem}.vmg-panel{gap:14px}.vmg-panel,.vmg-row{display:flex;flex-direction:column}.vmg-row{gap:6px}.vmg-label{color:var(--vmg-muted);font-size:.8125rem}.vmg-seg{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.vmg-seg__custom{font-size:.8125rem;color:var(--vmg-muted);padding:0 4px}.vmg-seg__custom.is-on{color:var(--vmg-gold)}.vmg-slider{display:flex;flex-direction:column;gap:4px;margin:0}.vmg-slider__top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.vmg-slider__top code{color:var(--vmg-text);background:none;padding:0;font-size:.875rem}.vmg-slider__top output{font-variant-numeric:tabular-nums;color:var(--vmg-gold);font-weight:600}.vmg-slider input[type=range]{width:100%;min-height:28px;accent-color:var(--vmg-gold)}.vmg-slider__hint{display:flex;justify-content:space-between;gap:8px;color:var(--vmg-muted);font-size:.75rem}.vmg-reset{align-self:flex-start}.vmg-out{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}.vmg-out__head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.vmg-out__head h2{font-size:1rem}.vmg-code,.vmg-out__head h2{margin:0;color:var(--vmg-text)}.vmg-code{padding:10px;border-radius:6px;background:var(--vmg-panel-2);border:1px solid var(--vmg-line);font-size:.8125rem;white-space:pre-wrap;word-break:break-all}.vmg-faq{margin-top:24px;background:var(--vmg-panel);border:1px solid var(--vmg-rim);border-radius:10px;padding:16px}.vmg-faq h2{font-size:1.25rem;margin:0 0 8px;color:var(--vmg-text)}.vmg-faq details{border-top:1px solid var(--vmg-line);padding:10px 0}.vmg-faq summary{cursor:pointer;font-weight:600}.vmg-faq p{margin:8px 0 0;color:var(--vmg-muted);line-height:1.55}@media (min-width:992px){.vmg-tool{grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);align-items:start}.vmg-out{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr))}}