.vis{background:var(--concrete);padding:48px 0 80px}.vis h2{margin-bottom:.4em;font-size:1.6rem}.vis-warn{border:2px solid var(--black);border-left:10px solid var(--yellow);border-radius:var(--radius);background:#fff8dc;align-items:flex-start;gap:12px;margin:0 0 28px;padding:14px 16px;display:flex}.vis-warn .i{flex:none;width:24px;height:24px;margin-top:2px}.vis-grid{grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);align-items:start;gap:28px;display:grid}.vis-stage,.vis-controls{border:2px solid var(--black);border-radius:var(--radius-lg);background:#fff;padding:22px}.vis-controls fieldset{border:0;min-width:0;margin:0 0 22px;padding:0}.vis-controls fieldset:disabled{opacity:.45}.vis-controls fieldset:last-child{margin-bottom:0}.vis-empty{text-align:center;padding:30px 8px}.vis-pick{margin:6px 0 18px}.vis-samples{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.vis-sample{border:2px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#000;padding:0;transition:border-color .15s,transform .15s;overflow:hidden}.vis-sample:hover,.vis-sample:focus-visible{border-color:var(--hivis);transform:translateY(-2px)}.vis-sample img{aspect-ratio:16/9;object-fit:cover;width:100%}.vis-frame{border-radius:var(--radius);touch-action:none;user-select:none;background:#111;position:relative;overflow:hidden}.vis-frame canvas{width:100%;height:auto;display:block}.vis-quad{width:100%;height:100%;position:absolute;inset:0}.vis-quad polygon{fill:#f26b1d38;stroke:var(--hivis);stroke-width:3px;stroke-dasharray:10 6;vector-effect:non-scaling-stroke}.vis-quad polygon.over{fill:none;stroke-width:1.5px;opacity:.6}.vis-quad circle{fill:var(--hivis);stroke:#fff;stroke-width:3px;cursor:grab;vector-effect:non-scaling-stroke}.vis-quad circle.hit{fill:#0000;stroke:none}.vis-tag{background:var(--yellow);color:var(--black);font:800 .95rem/1 var(--head);text-transform:uppercase;letter-spacing:.08em;border:2px solid var(--black);border-radius:3px;padding:7px 10px;position:absolute;top:10px;left:10px}.vis-busy{text-align:center;color:#fff;background:#141414b8;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:20px;font-weight:600;display:flex;position:absolute;inset:0}.vis-finding{color:#fff;pointer-events:none;background:#141414d1;border-radius:999px;align-items:center;gap:10px;max-width:calc(100% - 24px);padding:8px 14px;font-size:.92rem;font-weight:600;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.vis-finding .vis-spin{border-width:3px;flex:none;width:18px;height:18px}.vis-vehicle{margin-bottom:10px}.vis-busy[hidden],.vis-finding[hidden],.vis-tag[hidden],.vis-view[hidden],.vis-body[hidden]{display:none}.vis-spin{border:5px solid #ffffff40;border-top-color:var(--hivis);border-radius:50%;width:44px;height:44px;animation:1s linear infinite vis-spin}@keyframes vis-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.vis-spin{animation-duration:3s}}.vis-under{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.vis-view,.vis-mode{border:2px solid var(--black);border-radius:var(--radius);display:inline-flex;overflow:hidden}.vis-tab{font:700 1rem var(--head);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;background:#fff;border:0;padding:10px 14px}.vis-tab[aria-pressed=true]{background:var(--black);color:var(--yellow)}.vis-small{padding:10px 14px;font-size:1rem}.vis-caption{margin:10px 0 0}.vis-chips{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.vis-chip{cursor:pointer;position:relative}.vis-chip input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.vis-chip span{border:2px solid var(--black);border-radius:var(--radius);min-height:44px;font:700 1rem/1.1 var(--head);text-transform:uppercase;letter-spacing:.04em;background:#fff;align-items:center;padding:8px 13px;transition:background .15s;display:inline-flex}.vis-chip.swatch{display:inline-flex}.vis-chip.swatch i{border:2px solid var(--black);pointer-events:none;border-radius:50%;width:18px;height:18px;margin-top:-9px;position:absolute;top:50%;left:10px}.vis-chip.swatch span{padding-left:36px}.vis-chip input:checked+span,.vis-chip input:checked~span{background:var(--black);color:var(--yellow)}.vis-chip input:focus-visible~span{box-shadow:0 0 0 4px var(--yellow)}.vis-chip:hover span{background:var(--yellow);color:var(--black)}.vis-opt[hidden]{display:none}.vis-opt-label span{text-transform:none;letter-spacing:0;color:var(--muted,#555);font-weight:600}.vis-chip.tick span:before{content:"";border:2px solid;border-radius:3px;flex:none;width:14px;height:14px;margin-right:8px}.vis-chip.tick input:checked+span:before{background:var(--yellow);box-shadow:inset 0 0 0 2px var(--black)}.vis-mode[hidden]{display:none}.vis-replay{min-width:44px;font-size:1.2rem}.vis-opt-label{font:700 1rem var(--head);text-transform:uppercase;letter-spacing:.06em;margin:0 0 7px}.vis-staff{margin:4px 0 16px;font-size:.95rem}.vis-staff summary{cursor:pointer;color:var(--steel-600)}.vis-staff input{width:100%;font:inherit;border:2px solid var(--steel-300);border-radius:var(--radius);margin-top:6px;padding:10px 12px}.vis-limit{margin:10px 0}#vis-status{margin-bottom:12px}.vis-result{background:var(--black);color:#ddd;border-radius:var(--radius-lg);margin-top:28px;padding:26px}.vis-result h2{color:#fff}.vis-actions{flex-wrap:wrap;gap:12px;margin-top:14px;display:flex}.vis-result .btn-outline{--fg:#fff;--bd:#fff9}.vis-result .btn-outline:hover{--bg:#fff;--fg:var(--black)}.vis-quote{border:2px solid var(--black);border-top:8px solid var(--hivis);border-radius:var(--radius-lg);background:#fff;margin-top:28px;padding:30px}.vis-attached{flex-wrap:wrap;gap:12px;margin:0 0 18px;display:flex}.vis-attached figure{width:200px;margin:0}.vis-attached img{border-radius:var(--radius);border:2px solid var(--line)}.vis-attached figcaption{color:var(--steel-600);margin-top:4px;font-size:.85rem}.vis-how{max-width:780px;margin-top:40px}.vis-how h2{font-size:1.4rem}@media (width<=960px){.vis-grid{grid-template-columns:1fr}.vis-stage,.vis-controls{padding:14px}.vis-samples{grid-template-columns:repeat(2,1fr)}.vis-quote{padding:18px}}
