#cal-scene{width:min(1010px,calc(100% - 24px));max-height:calc(100svh - 24px);overflow:auto;background:#f5ead0;color:#24463a;border:1px solid #c3a866;border-radius:20px}#cal-scene::backdrop{background:#132e2acc;backdrop-filter:blur(5px)}.cal-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px;border-bottom:1px solid #cab888;font:13px system-ui;position:sticky;top:0;z-index:8;background:#f5ead0}.cal-nav button{border:0;background:transparent;color:#315841;padding:9px;cursor:pointer}.cal-content{padding:18px 26px;text-align:center}.cal-content h1{font:600 clamp(23px,3vw,34px)/1.1 Georgia;margin:7px 0 15px}.cal-stage{position:relative;aspect-ratio:3/2;width:min(100%,calc(max(180px,100svh - 410px) * 1.5));margin:auto;overflow:hidden;border-radius:14px;box-shadow:0 5px 18px #2a432533;background:#baa785}.cal-wall{display:block;width:100%;height:100%;object-fit:cover}.cal-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.cal-guides path{fill:none;stroke:#f7f4df;stroke-width:20;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:8 8;opacity:.34}.cal-guides path.current{opacity:.8;filter:drop-shadow(0 1px 1px #32503f)}.cal-paint path{fill:none;stroke-width:21;stroke-linecap:round;stroke-linejoin:round;opacity:.92;filter:drop-shadow(1px 2px 1px #77552c44)}.cal-agy{position:absolute;left:80%;bottom:8%;width:20%;height:58%;object-fit:contain;object-position:bottom;transform:scaleX(-1);filter:drop-shadow(2px 4px 2px #3c433355);z-index:2}.cal-surface{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;cursor:crosshair;touch-action:none;z-index:3;padding:0}.cal-surface:focus-visible{outline:3px solid #ffe8ac;outline-offset:-6px}.cal-cursor{position:absolute;width:5%;height:10%;transform:translate(-56%,-5%) rotate(-18deg);z-index:4;pointer-events:none;filter:drop-shadow(1px 3px 2px #3c4c4655)}.cal-cursor>svg{width:100%;height:100%;display:block}.cal-cursor i{position:absolute;width:80%;height:25%;left:-30%;top:-10%;background:radial-gradient(ellipse,#e9bd58aa,transparent 70%);opacity:0;transform:rotate(-20deg)}.cal-cursor.spraying i{opacity:.85}.cal-status{display:flex;justify-content:center;align-items:center;gap:16px;margin:14px 0 10px;font:600 14px system-ui}.cal-progress{min-width:125px}.cal-toggle{border:1px solid #829b75;background:#fff0ce;color:#2f5742;border-radius:20px;padding:9px 17px;font:600 13px system-ui;cursor:pointer}.cal-toggle[aria-pressed=true]{background:#386d50;color:#fff1c4}.cal-start,.cal-finish{border:1px solid #75996f;border-radius:24px;background:#1c5545;color:#ffefbc;padding:12px 24px;font:600 15px system-ui;cursor:pointer}.cal-feedback{min-height:22px;font:600 14px/1.4 system-ui;margin:10px 0}.cal-line{max-width:800px;font:21px/1.4 Georgia;margin:16px auto}.cal-guide{max-width:790px;margin:10px auto;font:14px/1.5 system-ui;color:#56704d}.cal-nav button:focus-visible,.cal-toggle:focus-visible,.cal-start:focus-visible,.cal-finish:focus-visible{outline:3px solid #3e8663;outline-offset:3px}.admiring .cal-agy{animation:cal-step-back 1.8s ease-in-out forwards}.admiring .cal-guides{opacity:.12}.cal-stop .cal-map-art{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 3px 3px #315f3955)}@keyframes cal-step-back{0%{transform:scaleX(-1)}35%{transform:translate(5%,-2%) scaleX(-1) rotate(-2deg)}65%{transform:translate(10%,0) scaleX(-1) rotate(1deg)}100%{transform:translate(12%,1%) scale(-.95,.95)}}@media(max-width:650px){.cal-content{padding:16px}.cal-nav{padding:8px}.cal-nav>span{display:none}.cal-line{font-size:18px}.cal-guide{font-size:13px}.cal-status{gap:8px;margin-top:10px}.cal-progress{font-size:12px}.cal-cursor{width:7%;height:12%}.cal-feedback{font-size:13px}.cal-stage{width:min(100%,calc(max(170px,100svh - 430px) * 1.5))}}@media(prefers-reduced-motion:reduce){.admiring .cal-agy{animation:none;transform:translate(12%,1%) scale(-.95,.95)}}

.cal-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#e3d2a4,#b0b991);color:#24463a;font:600 15px system-ui;z-index:7}.art-ready .cal-loading{display:none}
.cal-police{position:absolute;left:108%;bottom:0;width:67%;height:52%;object-fit:contain;object-position:bottom;z-index:6;transition:left 1.7s ease-out}.arrived .cal-police{left:25%}.police-stage .cal-guides{opacity:.08}.cal-precinct{position:relative;aspect-ratio:3/2;width:min(100%,calc(max(200px,100svh - 330px)*1.5));margin:auto;overflow:hidden;border-radius:14px;background:#bda97d;isolation:isolate}.cal-room{width:100%;height:100%;object-fit:cover;display:block}.cal-oncho{position:absolute;left:-32%;bottom:0;width:29%;height:95%;object-fit:contain;object-position:bottom;filter:drop-shadow(2px 4px 2px #47362355);transition:left 1.1s ease-out;z-index:2}.oncho-enters .cal-oncho{left:1%}.cal-money .cal-oncho{animation:cal-fan .25s ease-in-out 8 alternate}.cal-money .money-shower{z-index:5}.cal-money .dollar-bill{animation-name:cal-bill-overload}@keyframes cal-fan{to{transform:rotate(-2deg)}}@keyframes cal-bill-overload{0%{top:46%;left:9%;opacity:0;transform:scale(.3) rotate(0)}15%{opacity:1}55%{top:-15%;left:var(--x);transform:scale(1) rotate(var(--rotation))}100%{top:calc(8% + var(--depth) * 15%);left:var(--x);opacity:1;transform:scale(1.5) rotate(var(--rotation))}}@media(prefers-reduced-motion:reduce){.cal-police,.cal-oncho{transition:none}.cal-money .cal-oncho{animation:none}.cal-money .dollar-bill{animation:none;opacity:1;top:calc(8% + var(--depth) * 15%);transform:translate(-50%,-50%) rotate(var(--rotation))}}
/* v33: stable tracing frame, separated left-side boarding, visible hand-origin bills. */
.cal-feedback{height:42px;min-height:42px;display:flex;align-items:center;justify-content:center}
.police-stage .cal-agy{left:22%;bottom:5%;transform:scaleX(1)}

@keyframes cal-bill-overload{0%{top:50%;left:9.5%;opacity:1;transform:translate(-50%,-50%) scale(.24) rotate(0)}8%{top:50%;left:9.5%;opacity:1;transform:translate(-50%,-50%) scale(.3) rotate(0)}55%{top:-15%;left:var(--x);opacity:1;transform:translate(-50%,-50%) scale(1) rotate(var(--rotation))}100%{top:calc(8% + var(--depth) * 15%);left:var(--x);opacity:1;transform:translate(-50%,-50%) scale(1.5) rotate(var(--rotation))}}
@media(prefers-reduced-motion:reduce){}

/* Arrest is a clean story cut: Agy stays grounded beside the car until the precinct replaces the frame. */
.police-stage .cal-agy{opacity:1;transition:none;animation:none}
