:root[data-brand=sinky]{--vh-primary: #00d4ff;--vh-primary-ink: #0b1020;--vh-secondary: #3b82f6;--vh-highlight: #8b5cf6;--vh-font: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--vh-font-heading: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif}.vh-mapper{--_side: 330px;display:flex;flex-direction:column;min-height:480px;height:100%;background:var(--vh-surface);border:1px solid var(--vh-line);border-radius:var(--vh-radius);color:var(--vh-ink);font-family:var(--vh-font);font-size:13px;overflow:hidden}.vh-mapper__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--vh-line);background:var(--vh-surface)}.vh-mapper__readout{margin-left:auto;display:flex;gap:12px;color:var(--vh-ink-3);font-variant-numeric:tabular-nums}.vh-mono{font-family:var(--vh-font-mono)}.vh-muted{color:var(--vh-ink-3)}.vh-small{font-size:12px}.vh-seg{display:inline-flex;border:1px solid var(--vh-line);border-radius:var(--vh-radius-sm);overflow:hidden}.vh-seg>button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--vh-surface);color:var(--vh-ink-2);padding:5px 10px;font:inherit;font-weight:500;cursor:pointer;line-height:1.2}.vh-seg>button+button{border-left:1px solid var(--vh-line)}.vh-seg>button:hover{background:var(--vh-surface-2)}.vh-seg>button.is-on{background:var(--vh-secondary);color:#fff}.vh-seg>button:disabled{opacity:.45;cursor:default}.vh-seg .vh-mapper__zoom{min-width:56px;font-variant-numeric:tabular-nums}.vh-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--vh-line);background:var(--vh-surface);color:var(--vh-ink);padding:5px 12px;border-radius:var(--vh-radius-sm);font:inherit;font-weight:600;cursor:pointer;line-height:1.2}.vh-btn:hover{background:var(--vh-surface-2)}.vh-btn:disabled{opacity:.5;cursor:default}.vh-btn--primary{background:var(--vh-primary);border-color:var(--vh-primary);color:var(--vh-primary-ink)}.vh-btn--primary:hover{filter:brightness(.94);background:var(--vh-primary)}.vh-btn--small{padding:4px 9px;font-size:12px}.vh-btn--wide{width:100%;margin:8px 0}.vh-link{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;color:var(--vh-primary);font:inherit;font-weight:600;cursor:pointer;padding:0}.vh-link--muted{color:var(--vh-ink-3);font-weight:500}.vh-link:disabled{opacity:.5;cursor:default}.vh-toggle{display:inline-flex;align-items:center;gap:6px;color:var(--vh-ink-2);cursor:pointer}.vh-mapper__body{display:grid;grid-template-columns:minmax(0,1fr) var(--_side);flex:1;min-height:0}.vh-mapper__stage{position:relative;min-height:420px;background:linear-gradient(45deg,var(--vh-surface-2) 25%,transparent 25%,transparent 75%,var(--vh-surface-2) 75%),linear-gradient(45deg,var(--vh-surface-2) 25%,transparent 25%,transparent 75%,var(--vh-surface-2) 75%);background-size:16px 16px;background-position:0 0,8px 8px;background-color:var(--vh-bg);outline:none;overflow:hidden}.vh-mapper__stage:focus-visible{box-shadow:inset 0 0 0 2px var(--vh-primary)}.vh-mapper__stage canvas{display:block;touch-action:none;user-select:none;-webkit-user-select:none}.vh-mapper__stage.is-grab canvas{cursor:grab}.vh-mapper__stage.is-cross canvas{cursor:crosshair}.vh-mapper__stage.is-move canvas{cursor:move}.vh-mapper__stage.is-pointer canvas{cursor:pointer}.vh-mapper__empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--vh-ink-3)}.vh-mapper__hint{position:absolute;left:12px;bottom:12px;right:12px;max-width:560px;background:color-mix(in srgb,var(--vh-secondary) 88%,transparent);color:#fff;padding:8px 12px;border-radius:var(--vh-radius-sm);font-size:12px;line-height:1.4;pointer-events:none}.vh-mapper__hintx{position:absolute;right:8px;top:8px;width:36px;height:36px;border-radius:999px;border:0;background:color-mix(in srgb,var(--vh-ink) 70%,transparent);color:#fff;font:inherit;font-size:18px;line-height:1;cursor:pointer}@media(pointer:coarse){.vh-mapper__hint{top:8px;bottom:auto;right:52px;font-size:12px;padding:6px 10px}}.vh-mapper__side{border-left:1px solid var(--vh-line);display:flex;flex-direction:column;min-height:0;background:var(--vh-surface)}.vh-side__scroll{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}.vh-side__head{display:flex;justify-content:space-between;align-items:baseline;padding:10px 12px 6px;font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--vh-ink-2)}.vh-poslist{list-style:none;margin:0;padding:0}.vh-pos{display:grid;grid-template-columns:6px minmax(0,1fr) auto;gap:10px;align-items:start;padding:9px 12px;border-top:1px solid var(--vh-line);cursor:pointer}.vh-pos:hover{background:var(--vh-surface-2)}.vh-pos.is-active{background:color-mix(in srgb,var(--vh-primary) 9%,var(--vh-surface));box-shadow:inset 3px 0 0 var(--vh-primary)}.vh-pos__swatch{width:6px;height:34px;border-radius:3px;margin-top:2px}.vh-pos__name{font-weight:600;display:flex;gap:6px;align-items:baseline}.vh-pos__n{font-family:var(--vh-font-mono);font-size:11px;color:var(--vh-ink-3);font-weight:500}.vh-pos__meta{color:var(--vh-ink-3);font-size:12px;margin-top:1px}.vh-pos:not(.is-mapped) .vh-pos__name:after{content:"unmapped";font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--vh-warn);background:var(--vh-warn-bg);padding:1px 6px;border-radius:999px}.vh-pos__chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.vh-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--vh-line);background:var(--vh-surface);color:var(--vh-ink-2);font:inherit;font-size:11px;padding:2px 4px 2px 8px;border-radius:999px;cursor:pointer;display:inline-flex;gap:6px;align-items:center}.vh-chip.is-on{border-color:var(--vh-secondary);color:var(--vh-ink)}.vh-chip__x{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:999px;color:var(--vh-ink-3)}.vh-chip__x:hover{background:var(--vh-bad-bg);color:var(--vh-bad)}.vh-cands{border-top:1px solid var(--vh-line);padding-bottom:8px}.vh-cands .vh-small{padding:0 12px 4px}.vh-cands .vh-btn--wide{width:calc(100% - 24px);margin:6px 12px}.vh-candlist{list-style:none;margin:0;padding:0}.vh-candlist li{display:flex;justify-content:space-between;gap:8px;padding:6px 12px;font-size:12px}.vh-candlist li.is-on{background:color-mix(in srgb,var(--vh-candidate) 18%,var(--vh-surface))}.vh-candlist__acts{display:flex;gap:10px;white-space:nowrap}.vh-keys{margin-top:auto;border-top:1px solid var(--vh-line);padding:8px 12px;font-size:12px;color:var(--vh-ink-2)}.vh-keys summary{cursor:pointer;font-weight:600}.vh-keys dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:8px 0 0}.vh-keys dt{font-family:var(--vh-font-mono);color:var(--vh-ink-3)}.vh-keys dd{margin:0}@media(max-width:760px){.vh-mapper__body{grid-template-columns:1fr;grid-template-rows:minmax(46dvh,1fr) auto}.vh-mapper__side{border-left:0;border-top:1px solid var(--vh-line);max-height:32vh;max-height:32dvh}.vh-mapper__stage{min-height:46vh;min-height:46dvh}.vh-mapper__toolbar{gap:6px;padding:6px}.vh-mapper__readout{display:none}}@media(prefers-reduced-motion:no-preference){.vh-btn,.vh-seg>button{transition:background .12s ease}}.vh-poslist.has-check .vh-pos{grid-template-columns:auto 6px minmax(0,1fr) auto}.vh-side__all{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.vh-side__pick{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:0 12px 8px;font-size:12px}.vh-side__pick .vh-link{text-transform:capitalize}.vh-side__pick-n{margin-left:auto;color:var(--vh-ink-3)}.vh-pos__check{margin:4px 0 0;accent-color:var(--vh-primary);cursor:pointer}.vh-pos.is-checked{background:color-mix(in srgb,var(--vh-primary) 6%,var(--vh-surface))}.vh-pos--empty{grid-template-columns:1fr;color:var(--vh-ink-3);cursor:default}.vh-chip--tag{border-style:dashed;padding-right:8px}.vh-bulk{flex:0 0 auto;max-height:48%;overflow:auto;border-top:1px solid var(--vh-line);background:var(--vh-surface-2);padding:8px 12px 10px;display:flex;flex-direction:column;gap:8px}.vh-bulk__count{font-weight:600;color:var(--vh-ink-2);white-space:nowrap}.vh-bulk__modes{display:flex;flex-wrap:wrap;gap:4px}.vh-mode{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--vh-line);background:var(--vh-surface);color:var(--vh-ink-2);font:inherit;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;cursor:pointer}.vh-mode:hover:not(:disabled){border-color:var(--vh-ink-3)}.vh-mode.is-on{background:var(--vh-secondary);border-color:var(--vh-secondary);color:#fff}.vh-mode:disabled{opacity:.45;cursor:default}.vh-mode--danger:not(:disabled){color:var(--vh-bad)}.vh-bulk__hint{flex-basis:100%}.vh-bulk__head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.vh-bulk__add{display:inline-flex;gap:4px;align-items:center;text-transform:none;letter-spacing:0}.vh-bulk__add input{width:52px}.vh-bulk__row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.vh-bulk__row>input,.vh-bulk__row>select{flex:1;min-width:0;font:inherit;font-size:12px;padding:4px 6px;border:1px solid var(--vh-line);border-radius:var(--vh-radius-sm);background:var(--vh-surface);color:var(--vh-ink)}.vh-bulk__row>input[type=number]{flex:0 0 64px}.vh-bulk__add input{font:inherit;font-size:12px;padding:3px 6px;border:1px solid var(--vh-line);border-radius:var(--vh-radius-sm);background:var(--vh-surface);color:var(--vh-ink)}.vh-bulk__row--end{justify-content:flex-end;gap:14px;padding-top:2px}.vh-bulk__links{display:flex;gap:12px;font-size:12px}.vh-bulk__new{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px dashed var(--vh-line);border-radius:var(--vh-radius-sm)}.vh-bulk__new>input{font:inherit;font-size:12px;padding:4px 6px;border:1px solid var(--vh-line);border-radius:var(--vh-radius-sm);background:var(--vh-surface);color:var(--vh-ink)}.vh-link--danger{color:var(--vh-bad)}.vh-btn--danger{background:var(--vh-bad);border-color:var(--vh-bad);color:#fff}.vh-btn--danger:hover{background:var(--vh-bad);filter:brightness(.94)}.vh-tier{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:1px 6px;border-radius:999px;background:var(--vh-surface-2);color:var(--vh-ink-2)}.vh-tier--1{background:color-mix(in srgb,var(--vh-primary) 16%,var(--vh-surface));color:var(--vh-primary)}.vh-tier--2{background:var(--vh-surface-2);color:var(--vh-ink-2)}.vh-tier--3{background:var(--vh-surface-2);color:var(--vh-ink-3)}.vh-tier--vinyl{background:color-mix(in srgb,var(--vh-highlight) 35%,var(--vh-surface));color:var(--vh-ink)}.vh-pos__acts{display:flex;flex-direction:column;gap:4px;align-items:flex-end}.vh-pos__more{font-size:12px}.vh-pos__detail{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;padding:8px;margin-top:4px;background:var(--vh-surface-2);border-radius:var(--vh-radius-sm);font-size:12px;cursor:default}.vh-pos__detail label{display:flex;flex-direction:column;gap:2px;color:var(--vh-ink-3)}.vh-pos__detail .vh-input{font-size:12px;padding:3px 6px}.vh-pos__wide{grid-column:1 / -1}.vh-pos__img{display:flex;gap:8px;align-items:center}.vh-pos__img img{width:72px;height:54px;object-fit:cover;border-radius:4px;border:1px solid var(--vh-line);background:#111}.vh-pos:not(.is-mapped) .vh-pos__name:after{order:9}.vh-pos__hist{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}.vh-pos__histitem{background:var(--vh-surface);border:1px solid var(--vh-line);border-radius:999px;padding:1px 8px;font-size:11px}.vh-pos__histitem b{color:var(--vh-good)}.vh-pos__warn{margin-top:3px;font-size:11.5px;color:var(--vh-warn);background:var(--vh-warn-bg);border-radius:4px;padding:2px 6px}.vh-pos__detail{max-height:45vh;overflow:auto}.vh-mapper__body>.vh-mapper__side{min-height:0;overflow:hidden}@media(max-width:760px){.vh-mapper__body{grid-template-rows:minmax(170px,42%) minmax(0,1fr)}.vh-mapper__body>.vh-mapper__side{max-height:none}}@media(max-width:760px){.vh-mapper__stage{min-height:0}}
