:root{font-family:'Microsoft YaHei',system-ui,sans-serif;color:#193e46;background:#e9eee7}*{box-sizing:border-box}body{margin:0}main{max-width:1280px;margin:auto;padding:20px 24px}header{display:flex;justify-content:space-between;align-items:center;gap:12px}h1{font-size:25px;letter-spacing:.03em;margin:6px 0}small,.intro,.note{color:#607979}.intro,.note{font-size:13px;line-height:1.6}.button,button{font:inherit;min-height:44px;border:1px solid #bccac5;background:#f7f9f4;border-radius:9px;padding:9px 16px;color:inherit;text-decoration:none;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #ae852c;outline-offset:2px}button.active{background:#e6bf65;border-color:#bf9746;font-weight:700}.actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.stage{position:relative;background:linear-gradient(#f3f6ef,#e6ece2);border:1px solid #c1cec7;border-radius:14px;overflow:hidden}.stage canvas{width:100%;aspect-ratio:844/390;display:block}.labels{position:absolute;inset:18px 0 auto;display:grid;grid-template-columns:1fr 1fr;text-align:center;pointer-events:none}.labels b{font-size:18px}.labels small{display:block;font-size:12px;margin-top:6px}#loading{position:absolute;inset:0;background:#eef2e9;display:flex;align-items:center;justify-content:center}.playback{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;padding:12px;border:1px solid #c4d0c9;border-radius:12px;background:#f5f8f1}.playback label,.playback output{font-size:13px;white-space:nowrap}.playback input{flex:1 1 160px;min-width:80px;accent-color:#b28a35}.playback output{min-width:60px;font-variant-numeric:tabular-nums}footer{display:flex;justify-content:space-between;font-size:12px;margin-top:20px}a{color:#315b63}[hidden]{display:none!important}@media(max-width:900px){main{padding:10px 12px}h1{font-size:19px}.intro{margin:6px 0}.actions{margin:8px 0;gap:5px}.actions button,.playback button{padding:7px 10px}.labels{top:10px}.labels b{font-size:14px}.labels small{font-size:10px}.playback{flex-wrap:wrap;padding:8px}.playback input{min-width:160px}.note,footer{font-size:11px}}
@media(min-width:901px) and (min-height:600px){.stage{max-width:min(100%,calc((100dvh - 340px)*2.1641));margin-inline:auto}}
