*{box-sizing:border-box}
html,body,#root{margin:0;padding:0;height:100%}

  *{box-sizing:border-box}
  html,body{margin:0;padding:0;height:100%}
  body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
  input,button,textarea{font-family:inherit}
  input:focus,textarea:focus{outline:none}
  ::-webkit-scrollbar{width:10px;height:10px}
  ::-webkit-scrollbar-thumb{background:rgba(0,0,0,.16);border-radius:8px;border:3px solid transparent;background-clip:padding-box}
  ::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.28);background-clip:padding-box}
  @keyframes spin{to{transform:rotate(360deg)}}
  @keyframes softpulse{0%,100%{opacity:1}50%{opacity:.4}}
  @keyframes toastIn{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%,0)}}
  @keyframes shimmer{0%{background-position:-380px 0}100%{background-position:380px 0}}
  .thr-kebab{opacity:0;transition:opacity .12s}
  .thr:hover .thr-kebab{opacity:1}
  .tile-act{opacity:0;transition:opacity .15s}
  .tile:hover .tile-act{opacity:1}
  .tile:hover{transform:translateY(-2px)}
  @keyframes lbIn{from{opacity:0}to{opacity:1}}
  .ftile-ov{opacity:0;transition:opacity .14s ease}
  .ftile:hover .ftile-ov{opacity:1}
  .ftile:hover .ftile-play{opacity:0}
  .ftile:hover .ftile-img{transform:scale(1.015)}
  .ftile-img{transition:transform .3s ease}
  .ftile-play{transition:opacity .14s ease}
  .fmeta-extra{opacity:0;transition:opacity .16s ease}
  .fmeta:hover .fmeta-extra{opacity:1}
  .vpill{background:rgba(255,255,255,.94);color:#1d1d1f;border:none;border-radius:7px;padding:6px 10px;font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:background .12s}
  .vpill:hover{background:#fff}
  .ovbtn{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.92);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.22);color:#1d1d1f;transition:background .12s}
  .ovbtn:hover{background:#fff}
  .fmact{display:flex;align-items:center;gap:6px;background:none;border:none;color:var(--text2);font-size:13px;font-weight:500;cursor:pointer;padding:3px 2px;transition:color .12s}
  .fmact:hover{color:var(--text)}
  .lbbtn{flex:1;padding:11px 8px;border-radius:11px;background:var(--track);border:none;color:var(--text);font-size:14px;font-weight:500;cursor:pointer;text-align:center;transition:background .12s}
  .lbbtn:hover{background:color-mix(in srgb,var(--accent) 10%,var(--track))}
  .lbicon{width:34px;height:34px;border-radius:9px;background:none;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text2);transition:background .12s,color .12s}
  .lbicon:hover{background:var(--track);color:var(--text)}
  .fchip .fx{opacity:0;transition:opacity .12s}
  .fchip:hover .fx{opacity:.5}
  .lcard .lcheck{opacity:0;transition:opacity .12s}
  .lcard:hover .lcheck{opacity:1}
  .lbstage .lbctl{opacity:0;transition:opacity .18s ease}
  .lbstage:hover .lbctl{opacity:1}
  .railthumb{width:54px;aspect-ratio:9/16;border-radius:8px;overflow:hidden;cursor:pointer;flex-shrink:0;border:2px solid transparent;background:var(--track);transition:border-color .12s}
  .railthumb:hover{border-color:var(--border2)}
