/* ---------- v2 grafts: sweep line, hold ring, chips, IR CUT, cursor states ---------- */
.sweep{position:fixed;left:0;right:0;top:-2px;height:1px;z-index:118;pointer-events:none;opacity:0;
  background:linear-gradient(90deg,transparent,var(--brass) 30%,var(--brass-2) 50%,var(--brass) 70%,transparent)}
.sweep.is-run{animation:sweepline 1.5s cubic-bezier(.7,0,.3,1) forwards}
@keyframes sweepline{0%{top:-2px;opacity:0}8%{opacity:.9}92%{opacity:.9}100%{top:100vh;opacity:0}}

.arm{position:relative;border-radius:999px;padding:10px 14px;margin:0 -14px;width:calc(100% + 28px);user-select:none;-webkit-user-select:none;touch-action:none}
.arm__ring{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.arm__ring rect{fill:none;stroke:var(--brass);stroke-width:1.5;stroke-dasharray:1;stroke-dashoffset:1;vector-effect:non-scaling-stroke;transition:stroke-dashoffset .45s var(--e-out),opacity .4s;opacity:.95}
.arm.is-holding .arm__ring rect{stroke-dashoffset:0;transition:stroke-dashoffset 1.2s linear}
.arm.is-done .arm__ring rect{stroke-dashoffset:0;opacity:0;transition:opacity .6s}
.arm[aria-pressed="true"] .arm__ring rect{stroke-dashoffset:1}
.arm.is-holding .arm__knob{transform:scale(.92)}

.planner__left{display:flex;flex-direction:column;gap:12px;min-width:0}
.plan__chips{display:none;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 0 6px;-webkit-overflow-scrolling:touch}
.plan__chips::-webkit-scrollbar{display:none}
.chip{flex:none;scroll-snap-align:start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 14px 8px 10px;border:1px solid var(--line-3);border-radius:999px;color:var(--paper);font-size:.84rem;font-weight:600;background:var(--ink-2);transition:all .3s}
.chip i{width:10px;height:10px;border-radius:50%;border:1px solid rgba(236,234,229,.6)}
.chip[aria-pressed="true"]{background:var(--brass);border-color:var(--brass);color:#0a0a0a}
.chip[aria-pressed="true"] i{background:#0a0a0a;border-color:#0a0a0a}
@media (max-width:900px){.plan__chips{display:flex}}
.plan__cones .zone{opacity:0;transition:opacity .5s}
.plan__cones .zone.is-on{opacity:1}
.plan__cones .cone{fill:rgba(200,162,75,.17);stroke:rgba(200,162,75,.6);stroke-width:1;vector-effect:non-scaling-stroke}
.plan__cones .camdot{fill:var(--brass);stroke:#0a0a0a;stroke-width:2}
.plan__cones .sensdot{fill:#0a0a0a;stroke:var(--paper);stroke-width:1.5}
.btn.is-done{border-color:var(--ok);color:var(--ok)}

.ircut{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin-top:22px}
.ircut>.mono{font-size:10px;letter-spacing:.24em;color:var(--muted-2)}
.ircut__track{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;background:var(--ink-2)}
.ircut__track button{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:999px;font-size:.84rem;font-weight:600;color:var(--muted);transition:all .35s var(--e-out)}
.ircut__track button .ico{width:14px;height:14px}
.ircut__track button:hover{color:var(--paper)}
.ircut__track button.is-on{background:var(--paper);color:var(--ink)}
.ircut__note{font-size:.8rem;color:var(--muted-2)}

.cursor.is-armed .cursor__ring{border-color:rgba(200,162,75,.85)}
.cursor.is-armed .cursor__ring::before,.cursor.is-armed .cursor__ring::after{content:"";position:absolute;background:rgba(200,162,75,.9)}
.cursor.is-armed .cursor__ring::before{left:50%;top:-7px;width:1px;height:6px;transform:translateX(-50%)}
.cursor.is-armed .cursor__ring::after{left:50%;bottom:-7px;width:1px;height:6px;transform:translateX(-50%)}
.cursor.is-lock .cursor__ring{width:54px;height:54px;border-radius:4px;border-color:var(--brass);background:transparent;animation:lockin .4s var(--e-out)}
@keyframes lockin{from{transform:translate(-50%,-50%) scale(1.6);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
.cursor.is-lock .cursor__dot{opacity:1;background:var(--brass)}
.watch__stage.is-lock .watch__dot{background:var(--alert);animation:blink 1s steps(2,start) infinite}
.marquee__row.css-anim{animation:marq 28s linear infinite}
@keyframes marq{to{transform:translateX(-50%)}}
