*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;height:100dvh;background:#071a3a;color:#eef3ff;font:16px/1.3 -apple-system,system-ui,Segoe UI,Roboto,sans-serif;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}
button,select,input{font:inherit}
button{min-height:44px;min-width:44px;padding:6px 12px;border-radius:12px;border:1px solid #2c4f8f;background:#123168;color:#eef3ff;cursor:pointer}
button:active{transform:scale(.96)}
button.on{background:#3b82f6;border-color:#93c5fd}
button.primary{background:#16a34a;border-color:#4ade80}
button.rec{background:#b91c1c;border-color:#fca5a5;width:100%;font-weight:700;margin-top:6px}
button.rec.live{animation:pulse 1s infinite}
@keyframes pulse{50%{background:#ef4444}}
select,input{min-height:44px;border-radius:10px;border:1px solid #2c4f8f;background:#0d2550;color:#fff;padding:4px 8px;width:100%}
#top{height:64px;display:flex;align-items:center;gap:12px;padding:8px 12px;background:#0b2a5b;border-bottom:2px solid #1e40af}
.brand{font-weight:800;font-size:20px;white-space:nowrap;margin-right:auto}
.seg{display:flex;gap:2px;background:#0a1f45;border-radius:14px;padding:2px}
.seg button{border:none;border-radius:12px;background:transparent}
.seg button.on{background:#3b82f6}
main{display:flex;height:calc(100% - 64px - 68px)}
#side{width:250px;padding:8px;overflow-y:auto;background:#0a2249;border-right:1px solid #1e3a8a;touch-action:pan-y}
.box{background:#0d2a5c;border-radius:12px;padding:8px;margin-bottom:8px}
.box>label{display:block;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:#93c5fd;margin-bottom:4px}
.row{display:flex;gap:6px;margin-top:6px}.row button{flex:1}
#actList{margin:0;padding-left:0;list-style:none;max-height:180px;overflow:auto}
#actList li{padding:10px;border-radius:10px;background:#123168;margin:3px 0;display:flex;justify-content:space-between}
#actList li.sel{background:#3b82f6}
#bench{display:flex;flex-wrap:wrap;gap:6px}
.bp{display:flex;flex-direction:column;align-items:center;width:52px;font-size:11px;text-align:center}
.bp .av{width:44px;height:44px}
.hint{font-size:13px;color:#a5b4fc;padding:4px}
#stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;perspective:1400px}
#tilt{width:100%;height:100%;transition:transform .5s;transform-origin:50% 60%}
#tilt.is3d{transform:rotateX(52deg) scale(.95) translateY(-6%)}
canvas{width:100%;height:100%;display:block;touch-action:none}
#toast{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);background:#000c;padding:8px 16px;border-radius:20px;opacity:0;transition:opacity .3s;pointer-events:none}
#toast.show{opacity:1}
#pb{height:68px;display:flex;align-items:center;gap:8px;padding:8px 12px;background:#0b2a5b;border-top:2px solid #1e40af}
#scrub{flex:1;min-width:80px;accent-color:#60a5fa}
.loop{display:flex;align-items:center;gap:4px;white-space:nowrap}.loop input{width:24px;min-height:24px}
#cardWrap{position:fixed;inset:0;background:#000a;display:flex;align-items:center;justify-content:center;z-index:9}
#cardWrap[hidden]{display:none}
#card{width:360px;max-height:94vh;overflow:auto;border-radius:22px;background:linear-gradient(160deg,#fbbf24,#f59e0b 30%,#1d4ed8 31%,#0b2a5b);padding:6px;position:relative;box-shadow:0 10px 40px #000;border:4px solid #fde68a;touch-action:pan-y}
#cardClose{position:absolute;right:10px;top:10px;z-index:2;background:#0008}
.cardTop{height:170px;display:flex;align-items:center;justify-content:center;position:relative}
#cardAvatar{width:150px;height:150px}
.pn{position:absolute;left:14px;top:12px;font-size:40px;font-weight:900;color:#0b2a5b;text-shadow:0 2px #fde68a}
.pn small{display:block;font-size:11px;font-weight:700}
.cardBody{background:#0b2a5bee;border-radius:16px;padding:10px}
.cardBody label{display:block;font-size:12px;color:#93c5fd;margin-bottom:6px}
.av{border-radius:50%;overflow:hidden;background:#1e3a8a}
.av img{width:100%;height:100%;object-fit:cover}
.av svg{width:100%;height:100%}
.bob{animation:bob 1.6s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-4px)}}
.blink{animation:blink 4s infinite;transform-origin:center 42%}
@keyframes blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
.ballspin{animation:spin 1.2s linear infinite;transform-origin:150px 150px}
@keyframes spin{to{transform:rotate(360deg)}}
@media (max-width:1000px){#side{width:200px}.brand{display:none}}

.chk{display:flex;align-items:center;gap:8px;font-size:14px;margin-top:8px;min-height:36px}.chk input{width:26px;min-height:26px;flex:none}
button.link{width:100%;margin-top:6px;font-size:14px}button.link.on{background:#7c3aed;border-color:#c4b5fd}

body{display:flex;flex-direction:column;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
#top{flex:none;height:auto;min-height:64px;padding-top:calc(8px + env(safe-area-inset-top))}
main{flex:1;min-height:0;height:auto}
#pb{flex:none;height:auto;min-height:68px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}
.logo{width:36px;height:36px;border-radius:50%;vertical-align:middle}
.row button{min-width:0;padding:6px 4px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
button.free{width:100%;margin-top:6px;font-size:14px;background:#0f766e;border-color:#5eead4}
button.free.on{background:#14b8a6}
#freeBar button{width:100%;margin-top:6px;font-size:14px}
#top .seg button{padding:6px 10px;white-space:nowrap}
#delPlay{flex:0 0 46px}

#actList li{align-items:center;gap:4px;cursor:pointer}
#actList li .ab{min-width:34px;min-height:34px;padding:0;font-size:14px;background:#0a1f45}
#actList li .an{flex:1}
button.rec2{width:100%;margin-top:6px;font-size:14px;background:#9a3412;border-color:#fdba74}
button.ins{width:100%;margin-top:6px;font-size:14px}
#tl{flex:none;height:118px;background:#081d40;border-top:1px solid #1e3a8a;padding:4px 10px;overflow-y:auto;touch-action:none;position:relative}
#tlHead{display:flex;align-items:center;gap:10px;font-size:13px;color:#93c5fd;height:30px}
#tlHead button{min-height:28px;padding:2px 10px;font-size:13px;margin-left:auto}
.tlHint{opacity:.7;font-size:12px}
.tlRow{display:flex;align-items:center;height:26px;margin:2px 0}
.tlLab{width:76px;flex:none;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;cursor:pointer;padding:3px 6px;border-radius:8px}
.tlLab.spot{background:#facc15;color:#000}
.tlTrack{flex:1;position:relative;height:24px;background:#0d2a5c;border-radius:6px}
.tlBar{position:absolute;top:2px;height:20px;border-radius:6px;background:#3b82f6;font-size:11px;line-height:20px;padding:0 14px 0 6px;white-space:nowrap;overflow:hidden;min-width:16px;cursor:grab;border:1px solid #93c5fd}
.tlBar.X{background:#b91c1c;border-color:#fca5a5}.tlBar.ball{background:#ea580c;border-color:#fdba74}.tlBar.sel{outline:3px solid #facc15}
.tlBar::after{content:'';position:absolute;right:0;top:0;bottom:0;width:12px;background:#ffffff55;border-left:1px solid #fff8}
#tlPlayhead{position:absolute;top:30px;bottom:0;width:2px;background:#facc15;pointer-events:none}
#bench .bp{cursor:pointer;border-radius:10px;padding:2px}
#bench .bp.sel{background:#facc15;color:#000}
body.present #top,body.present #side,body.present #pb,body.present #tl{display:none}
#floatBar{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;gap:6px;align-items:center;background:#0b2a5bdd;border:1px solid #3b82f6;border-radius:18px;padding:6px 8px;z-index:8;box-shadow:0 6px 24px #0008}
#floatBar[hidden]{display:none}
#fbGrip{font-size:24px;padding:0 6px;cursor:move;touch-action:none}

/* r5 timeline: touch-first */
#tl{height:auto;max-height:44px;overflow:hidden;padding:4px 10px;touch-action:none}
#tl.open{max-height:260px}
#tlHead{height:36px;gap:8px}
#tlHead button{min-height:34px;margin-left:0;padding:2px 12px;font-size:14px}
#tlHead .sp{flex:1}
#tlHead button.rec2{width:auto;margin-top:0}
#tlTime{font-weight:800;color:#facc15}
#tl:not(.open) #tlRows{display:none}
#tlRows{position:relative;max-height:212px;overflow-y:auto;touch-action:none;padding-bottom:4px}
.tlRow{height:40px;margin:3px 0}
.tlRow.ruler{height:26px}
.tlLab{width:84px;font-size:13px;padding:8px 6px}
.tlTrack{height:38px;touch-action:none}
.ruler .tlTrack{height:24px;background:#13306a;cursor:ew-resize}
.tick{position:absolute;top:4px;font-size:10px;color:#93c5fd;transform:translateX(2px);pointer-events:none}
.tlBar{top:1px;height:36px;line-height:36px;padding:0 30px 0 8px;font-size:13px;min-width:40px;touch-action:none;user-select:none;-webkit-user-select:none}
.tlBar span{pointer-events:none}
.tlBar::after{display:none}
.tlH{position:absolute;right:0;top:0;bottom:0;width:26px;background:#ffffff40;border-left:2px solid #fff;border-radius:0 6px 6px 0;touch-action:none}
.tlH::before{content:'⋮';position:absolute;left:8px;top:0;color:#fff;font-weight:900}
.tlBar.dragging{opacity:.85;box-shadow:0 0 0 3px #facc15}
#tlPlayhead{top:0;bottom:0;width:3px;margin-left:-1px;z-index:3}
#tlPlayhead.edit{pointer-events:none}
#tlPlayhead .knob{position:absolute;top:0;left:-9px;width:20px;height:22px;background:#facc15;border-radius:6px}
label.sub{display:block;font-size:12px;color:#93c5fd;margin-top:10px}
.seg.wide{display:flex;margin-top:4px}.seg.wide button{flex:1}
