/* play button next to record times */
.play{display:inline-flex;width:22px;height:22px;border-radius:5px;background:var(--card2);border:1px solid var(--line);align-items:center;justify-content:center;margin-right:8px;vertical-align:middle}
.play:hover{border-color:var(--accent);background:var(--accent);text-decoration:none}
.play .tri{width:0;height:0;border-left:8px solid #fff;border-top:5px solid transparent;border-bottom:5px solid transparent;margin-left:2px}
/* 3D replay viewer */
.rv{position:fixed;inset:0;z-index:60;background:#0a0a0c;color:#eee;font:13px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;overflow:hidden}
.rv-canvas{position:absolute;inset:0;display:block;touch-action:none}
.rv-load{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}
.rv-load h1{font:700 26px system-ui,sans-serif;margin:0 0 14px}.rv-msg{color:#9aa4b8}.rv-err{color:#ff6b78}
.rv-bar{width:300px;height:5px;background:#17171b;border-radius:3px;overflow:hidden}.rv-bar span{display:block;height:100%;background:#16a34a;width:0;transition:width .15s}
.rv-step{color:#6c7384;font-size:12px}
.rv-x{position:absolute;top:12px;right:12px;z-index:3;background:#b3202f;border-color:#b3202f;color:#fff}
.rv-hud{position:absolute;inset:0;pointer-events:none}
.rv-hud *{pointer-events:auto}
.rv-cam{position:absolute;left:24px;top:14px;color:#aab;text-shadow:0 1px 3px #000}
.rv-title{position:absolute;left:24px;top:48px;text-align:center;text-shadow:0 1px 3px #000}.rv-map{font-weight:700;font-size:15px;color:#fff}.rv-who{color:#ddd}.rv-rt{color:#ddd}
.rv-keys{position:absolute;left:12px;bottom:92px;display:grid;grid-template-columns:repeat(3,60px);grid-auto-rows:40px;gap:4px;padding:6px;background:rgba(15,15,18,.7);border-radius:6px}
.rv-key{display:flex;align-items:center;justify-content:center;background:#222226;color:#889;border:1px solid #333;border-radius:3px;font-size:12px}
.rv-key.on{background:#d9d9de;color:#111;border-color:#fff}
.rv-timer{position:absolute;left:50%;bottom:96px;transform:translateX(-50%);text-align:center;text-shadow:0 1px 3px #000}
.rv-tt{font-size:17px;font-weight:700;color:#fff}.rv-sp{font-size:20px;font-weight:700;color:#fff}.rv-sp small{font-size:11px;font-weight:400;color:#9aa}.rv-sp .pos{color:#34d399}.rv-sp .neg{color:#fb7185}
.rv-panel{position:absolute;right:16px;bottom:100px;min-width:240px;padding:12px 14px;background:rgba(15,15,18,.88);border:1px solid #2a2a30;border-radius:8px}
.rv-panel[hidden]{display:none}
.rv-panel h3{margin:0 0 8px;font:600 13px system-ui,sans-serif;color:#fff}
.rv-row{display:flex;justify-content:space-between;gap:16px;margin:4px 0;align-items:center}.rv-k{color:#8a93a6}.rv-v{color:#fff}.rv-row input[type=range]{width:120px}
.rv-row input{width:auto;margin:0}
.rv-bottom{position:absolute;left:0;right:0;bottom:0;padding:8px 14px 10px;background:linear-gradient(transparent,rgba(5,5,7,.92) 35%)}
.rv-srow{display:flex;align-items:center;gap:10px}.rv-time{color:#aab;font-size:12px;min-width:46px;text-align:center}
.rv-scrub{position:relative;flex:1;height:18px;cursor:pointer}.rv-scrub:before{content:"";position:absolute;left:0;right:0;top:8px;height:3px;background:#26262c;border-radius:2px}
.rv-fill{position:absolute;left:0;top:8px;height:3px;background:#16a34a;border-radius:2px;width:0}
.rv-knob{position:absolute;top:3px;width:12px;height:12px;margin-left:-6px;background:#34d399;border-radius:50%}
.rv-mark{position:absolute;top:2px;width:2px;height:14px}.rv-m1{background:#38bdf8}.rv-m2{background:#c026d3}
.rv-ctrl{display:flex;align-items:center;gap:10px;margin-top:4px}
.rv-play{width:34px;height:30px;padding:0;background:none;border:0;color:#fff;font-weight:700;font-size:15px}
.rv-speed{width:auto;padding:3px 6px;background:#17171b;border:1px solid #2a2a30;color:#fff;border-radius:5px;font:inherit}
.rv-btn{background:none;border:0;color:#cfd4e0;padding:4px 8px}.rv-btn:hover{color:#fff}.rv-hint{color:#667}
.rv-close{background:#b3202f;border-radius:5px;color:#fff}
.rv-close .rv-hint{color:#f3b}

.rv-texlabel{position:absolute;left:24px;top:32px;color:#7ddc9a;font-size:11px;text-shadow:0 1px 3px #000}
